Added initial ask for gradesystem in gradeaverage

This commit is contained in:
Elias Müller 2023-09-18 21:42:17 +02:00
parent 2c655e56ec
commit 22ab21ab3d
5 changed files with 44 additions and 10 deletions

View File

@ -27,6 +27,8 @@ class SettingsProvider extends ChangeNotifier {
void reset() async { void reset() async {
_storage = await SharedPreferences.getInstance(); _storage = await SharedPreferences.getInstance();
_storage.remove(_fieldName); _storage.remove(_fieldName);
_settings = DefaultSettings.get();
await update();
notifyListeners(); notifyListeners();
} }
@ -51,7 +53,7 @@ class SettingsProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void update() async { Future<void> update() async {
await _storage.setString(_fieldName, jsonEncode(_settings.toJson())); await _storage.setString(_fieldName, jsonEncode(_settings.toJson()));
} }

View File

@ -6,9 +6,10 @@ part 'gradeAveragesSettings.g.dart';
@JsonSerializable() @JsonSerializable()
class GradeAveragesSettings { class GradeAveragesSettings {
bool useGradeSystem; bool useGradeSystem;
bool askedForPreferredGradeSystem;
List<int> inputs; List<int> inputs;
GradeAveragesSettings({required this.useGradeSystem, required this.inputs}); GradeAveragesSettings({required this.useGradeSystem, required this.askedForPreferredGradeSystem, required this.inputs});
factory GradeAveragesSettings.fromJson(Map<String, dynamic> json) => _$GradeAveragesSettingsFromJson(json); factory GradeAveragesSettings.fromJson(Map<String, dynamic> json) => _$GradeAveragesSettingsFromJson(json);
Map<String, dynamic> toJson() => _$GradeAveragesSettingsToJson(this); Map<String, dynamic> toJson() => _$GradeAveragesSettingsToJson(this);

View File

@ -10,6 +10,8 @@ GradeAveragesSettings _$GradeAveragesSettingsFromJson(
Map<String, dynamic> json) => Map<String, dynamic> json) =>
GradeAveragesSettings( GradeAveragesSettings(
useGradeSystem: json['useGradeSystem'] as bool, useGradeSystem: json['useGradeSystem'] as bool,
askedForPreferredGradeSystem:
json['askedForPreferredGradeSystem'] as bool,
inputs: (json['inputs'] as List<dynamic>).map((e) => e as int).toList(), inputs: (json['inputs'] as List<dynamic>).map((e) => e as int).toList(),
); );
@ -17,5 +19,6 @@ Map<String, dynamic> _$GradeAveragesSettingsToJson(
GradeAveragesSettings instance) => GradeAveragesSettings instance) =>
<String, dynamic>{ <String, dynamic>{
'useGradeSystem': instance.useGradeSystem, 'useGradeSystem': instance.useGradeSystem,
'askedForPreferredGradeSystem': instance.askedForPreferredGradeSystem,
'inputs': instance.inputs, 'inputs': instance.inputs,
}; };

View File

@ -30,12 +30,45 @@ class _GradeAverageState extends State<GradeAverage> {
} }
} }
void switchSystem(bool e) => setState(() {
grades.clear();
gradeSystem = e;
settings.val(write: true).gradeAveragesSettings.useGradeSystem = e;
_persistGrades();
});
@override @override
void initState() { void initState() {
super.initState(); super.initState();
grades = settings.val().gradeAveragesSettings.inputs; grades = settings.val().gradeAveragesSettings.inputs;
gradeSystem = settings.val().gradeAveragesSettings.useGradeSystem; gradeSystem = settings.val().gradeAveragesSettings.useGradeSystem;
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
if(!settings.val().gradeAveragesSettings.askedForPreferredGradeSystem) {
settings.val(write: true).gradeAveragesSettings.askedForPreferredGradeSystem = true;
showDialog(context: context, builder: (context) => AlertDialog(
title: const Text("Notensystem"),
content: const Text("Wähle dein bevorzugtes Schulnotensystem"),
actions: [
TextButton(
onPressed: () {
switchSystem(true);
Navigator.of(context).pop();
},
child: const Text("Realschule"),
),
TextButton(
onPressed: () {
switchSystem(false);
Navigator.of(context).pop();
},
child: const Text("Oberstufe"),
),
],
));
}
});
} }
@override @override
@ -82,12 +115,6 @@ class _GradeAverageState extends State<GradeAverage> {
)).toList(), )).toList(),
onSelected: (e) { onSelected: (e) {
void switchSystem() => setState(() {
grades.clear();
gradeSystem = e;
settings.val(write: true).gradeAveragesSettings.useGradeSystem = e;
_persistGrades();
});
if(grades.isNotEmpty) { if(grades.isNotEmpty) {
showDialog( showDialog(
@ -96,11 +123,11 @@ class _GradeAverageState extends State<GradeAverage> {
title: "Notensystem wechseln", title: "Notensystem wechseln",
content: "Beim wechsel des Notensystems werden alle Einträge zurückgesetzt.", content: "Beim wechsel des Notensystems werden alle Einträge zurückgesetzt.",
confirmButton: "Fortfahren", confirmButton: "Fortfahren",
onConfirm: () => switchSystem(), onConfirm: () => switchSystem(e),
), ),
); );
} else { } else {
switchSystem(); switchSystem(e);
} }
}, },
), ),

View File

@ -19,6 +19,7 @@ class DefaultSettings {
devToolsEnabled: false, devToolsEnabled: false,
gradeAveragesSettings: GradeAveragesSettings( gradeAveragesSettings: GradeAveragesSettings(
useGradeSystem: true, useGradeSystem: true,
askedForPreferredGradeSystem: false,
inputs: [] inputs: []
), ),
timetableSettings: TimetableSettings( timetableSettings: TimetableSettings(