From 22ab21ab3dc7e1179b8f251d955430179881bef1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Mon, 18 Sep 2023 21:42:17 +0200 Subject: [PATCH] Added initial ask for gradesystem in gradeaverage --- lib/storage/base/settingsProvider.dart | 4 +- .../gradeAverages/gradeAveragesSettings.dart | 3 +- .../gradeAveragesSettings.g.dart | 3 ++ .../more/gradeAverages/gradeAverage.dart | 43 +++++++++++++++---- lib/view/settings/defaultSettings.dart | 1 + 5 files changed, 44 insertions(+), 10 deletions(-) diff --git a/lib/storage/base/settingsProvider.dart b/lib/storage/base/settingsProvider.dart index a15bfd6..8af0145 100644 --- a/lib/storage/base/settingsProvider.dart +++ b/lib/storage/base/settingsProvider.dart @@ -27,6 +27,8 @@ class SettingsProvider extends ChangeNotifier { void reset() async { _storage = await SharedPreferences.getInstance(); _storage.remove(_fieldName); + _settings = DefaultSettings.get(); + await update(); notifyListeners(); } @@ -51,7 +53,7 @@ class SettingsProvider extends ChangeNotifier { notifyListeners(); } - void update() async { + Future update() async { await _storage.setString(_fieldName, jsonEncode(_settings.toJson())); } diff --git a/lib/storage/gradeAverages/gradeAveragesSettings.dart b/lib/storage/gradeAverages/gradeAveragesSettings.dart index 9221949..8c3645a 100644 --- a/lib/storage/gradeAverages/gradeAveragesSettings.dart +++ b/lib/storage/gradeAverages/gradeAveragesSettings.dart @@ -6,9 +6,10 @@ part 'gradeAveragesSettings.g.dart'; @JsonSerializable() class GradeAveragesSettings { bool useGradeSystem; + bool askedForPreferredGradeSystem; List inputs; - GradeAveragesSettings({required this.useGradeSystem, required this.inputs}); + GradeAveragesSettings({required this.useGradeSystem, required this.askedForPreferredGradeSystem, required this.inputs}); factory GradeAveragesSettings.fromJson(Map json) => _$GradeAveragesSettingsFromJson(json); Map toJson() => _$GradeAveragesSettingsToJson(this); diff --git a/lib/storage/gradeAverages/gradeAveragesSettings.g.dart b/lib/storage/gradeAverages/gradeAveragesSettings.g.dart index bc685de..6fec86a 100644 --- a/lib/storage/gradeAverages/gradeAveragesSettings.g.dart +++ b/lib/storage/gradeAverages/gradeAveragesSettings.g.dart @@ -10,6 +10,8 @@ GradeAveragesSettings _$GradeAveragesSettingsFromJson( Map json) => GradeAveragesSettings( useGradeSystem: json['useGradeSystem'] as bool, + askedForPreferredGradeSystem: + json['askedForPreferredGradeSystem'] as bool, inputs: (json['inputs'] as List).map((e) => e as int).toList(), ); @@ -17,5 +19,6 @@ Map _$GradeAveragesSettingsToJson( GradeAveragesSettings instance) => { 'useGradeSystem': instance.useGradeSystem, + 'askedForPreferredGradeSystem': instance.askedForPreferredGradeSystem, 'inputs': instance.inputs, }; diff --git a/lib/view/pages/more/gradeAverages/gradeAverage.dart b/lib/view/pages/more/gradeAverages/gradeAverage.dart index 818300d..1880908 100644 --- a/lib/view/pages/more/gradeAverages/gradeAverage.dart +++ b/lib/view/pages/more/gradeAverages/gradeAverage.dart @@ -30,12 +30,45 @@ class _GradeAverageState extends State { } } + void switchSystem(bool e) => setState(() { + grades.clear(); + gradeSystem = e; + settings.val(write: true).gradeAveragesSettings.useGradeSystem = e; + _persistGrades(); + }); + @override void initState() { super.initState(); grades = settings.val().gradeAveragesSettings.inputs; 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 @@ -82,12 +115,6 @@ class _GradeAverageState extends State { )).toList(), onSelected: (e) { - void switchSystem() => setState(() { - grades.clear(); - gradeSystem = e; - settings.val(write: true).gradeAveragesSettings.useGradeSystem = e; - _persistGrades(); - }); if(grades.isNotEmpty) { showDialog( @@ -96,11 +123,11 @@ class _GradeAverageState extends State { title: "Notensystem wechseln", content: "Beim wechsel des Notensystems werden alle Einträge zurückgesetzt.", confirmButton: "Fortfahren", - onConfirm: () => switchSystem(), + onConfirm: () => switchSystem(e), ), ); } else { - switchSystem(); + switchSystem(e); } }, ), diff --git a/lib/view/settings/defaultSettings.dart b/lib/view/settings/defaultSettings.dart index 04c0324..6e9cdf6 100644 --- a/lib/view/settings/defaultSettings.dart +++ b/lib/view/settings/defaultSettings.dart @@ -19,6 +19,7 @@ class DefaultSettings { devToolsEnabled: false, gradeAveragesSettings: GradeAveragesSettings( useGradeSystem: true, + askedForPreferredGradeSystem: false, inputs: [] ), timetableSettings: TimetableSettings(