added setDayId function in gym_state

This commit is contained in:
Jackpkn
2025-01-19 23:40:33 +05:30
parent 757eb4b27d
commit 167b246f60

View File

@@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:wger/models/exercises/exercise.dart';
@@ -35,40 +36,58 @@ class GymState {
dayId: dayId ?? this.dayId,
);
}
@override
String toString() {
return 'GymState(currentPage: $currentPage, showExercisePages: $showExercisePages, exercisePages: ${exercisePages.length} exercises, dayId: $dayId)';
}
}
class GymStateNotifier extends StateNotifier<GymState> {
final _prefs = SharedPreferences.getInstance();
GymStateNotifier() : super(const GymState()) {
debugPrint('GymStateNotifier: Initializing');
_loadSavedState();
}
Future<void> _loadSavedState() async {
debugPrint('GymStateNotifier: Loading saved state');
final SharedPreferences prefs = await _prefs;
final int savedPage = prefs.getInt(GYM_PAGE_KEY) ?? 0;
debugPrint('GymStateNotifier: Loaded saved page: $savedPage');
state = state.copyWith(currentPage: savedPage);
}
Future<void> setCurrentPage(int page) async {
debugPrint('GymStateNotifier: Setting page from ${state.currentPage} to $page');
final SharedPreferences prefs = await _prefs;
await prefs.setInt(GYM_PAGE_KEY, page);
state = state.copyWith(currentPage: page);
debugPrint('GymStateNotifier: New state - $state');
}
void toggleExercisePages() {
state = state.copyWith(showExercisePages: !state.showExercisePages);
}
void setDayId(int dayId) {
state = state.copyWith(dayId: dayId);
}
void setExercisePages(Map<Exercise, int> exercisePages) {
debugPrint('GymStateNotifier: Setting exercise pages - ${exercisePages.length} exercises');
state = state.copyWith(exercisePages: exercisePages);
debugPrint('GymStateNotifier: Exercise pages set - ${exercisePages.entries.map((e) => '${e.key.id}: ${e.value}').join(', ')}');
debugPrint('GymStateNotifier: New state - $state');
}
void clear() {
Future<void> clear() async {
debugPrint('GymStateNotifier: Clearing state');
final SharedPreferences prefs = await _prefs;
await prefs.remove(GYM_PAGE_KEY);
state = state.copyWith(
exercisePages: {},
currentPage: 0,
dayId: null,
);
debugPrint('GymStateNotifier: State cleared - $state');
}
}