69 lines
2.2 KiB
Dart
69 lines
2.2 KiB
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
class SettingsState {
|
|
final int trainingTimeMinutes;
|
|
final double weightLeft;
|
|
final double weightRight;
|
|
final int goalSets;
|
|
final String initialProgram;
|
|
|
|
SettingsState({
|
|
this.trainingTimeMinutes = 20,
|
|
this.weightLeft = 16.0,
|
|
this.weightRight = 16.0,
|
|
this.goalSets = 5,
|
|
this.initialProgram = 'giant_1.0',
|
|
});
|
|
|
|
SettingsState copyWith({
|
|
int? trainingTimeMinutes,
|
|
double? weightLeft,
|
|
double? weightRight,
|
|
int? goalSets,
|
|
String? initialProgram,
|
|
}) {
|
|
return SettingsState(
|
|
trainingTimeMinutes: trainingTimeMinutes ?? this.trainingTimeMinutes,
|
|
weightLeft: weightLeft ?? this.weightLeft,
|
|
weightRight: weightRight ?? this.weightRight,
|
|
goalSets: goalSets ?? this.goalSets,
|
|
initialProgram: initialProgram ?? this.initialProgram,
|
|
);
|
|
}
|
|
}
|
|
|
|
class SettingsNotifier extends StateNotifier<SettingsState> {
|
|
SettingsNotifier() : super(SettingsState());
|
|
|
|
Future<void> loadSettings() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
state = SettingsState(
|
|
trainingTimeMinutes: prefs.getInt('trainingTimeMinutes') ?? 20,
|
|
weightLeft: prefs.getDouble('weightLeft') ?? 16.0,
|
|
weightRight: prefs.getDouble('weightRight') ?? 16.0,
|
|
goalSets: prefs.getInt('goalSets') ?? 5,
|
|
initialProgram: prefs.getString('initialProgram') ?? 'giant_1.0',
|
|
);
|
|
}
|
|
|
|
Future<void> saveSettings(SettingsState newSettings) async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.setInt('trainingTimeMinutes', newSettings.trainingTimeMinutes);
|
|
await prefs.setDouble('weightLeft', newSettings.weightLeft);
|
|
await prefs.setDouble('weightRight', newSettings.weightRight);
|
|
await prefs.setInt('goalSets', newSettings.goalSets);
|
|
await prefs.setString('initialProgram', newSettings.initialProgram);
|
|
state = newSettings;
|
|
}
|
|
|
|
Future<void> updateSettings(SettingsState newSettings) async {
|
|
await saveSettings(newSettings);
|
|
}
|
|
}
|
|
|
|
final settingsProvider = StateNotifierProvider<SettingsNotifier, SettingsState>(
|
|
(ref) {
|
|
return SettingsNotifier();
|
|
},
|
|
);
|