Added initial ask for gradesystem in gradeaverage
This commit is contained in:
parent
2c655e56ec
commit
22ab21ab3d
@ -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()));
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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);
|
||||
}
|
||||
},
|
||||
),
|
||||
|
@ -19,6 +19,7 @@ class DefaultSettings {
|
||||
devToolsEnabled: false,
|
||||
gradeAveragesSettings: GradeAveragesSettings(
|
||||
useGradeSystem: true,
|
||||
askedForPreferredGradeSystem: false,
|
||||
inputs: []
|
||||
),
|
||||
timetableSettings: TimetableSettings(
|
||||
|
Loading…
x
Reference in New Issue
Block a user