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 {
_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<void> update() async {
await _storage.setString(_fieldName, jsonEncode(_settings.toJson()));
}

View File

@ -6,9 +6,10 @@ part 'gradeAveragesSettings.g.dart';
@JsonSerializable()
class GradeAveragesSettings {
bool useGradeSystem;
bool askedForPreferredGradeSystem;
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);
Map<String, dynamic> toJson() => _$GradeAveragesSettingsToJson(this);

View File

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

View File

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