Made GradeAverage persistent

This commit is contained in:
2023-06-03 23:58:48 +02:00
parent 3f05f68ac1
commit fb839eb458
9 changed files with 107 additions and 22 deletions

View File

@ -1,6 +1,8 @@
import 'package:flutter/material.dart';
import 'package:json_annotation/json_annotation.dart';
import '../gradeAverages/gradeAveragesSettings.dart';
part 'settings.g.dart';
@JsonSerializable(explicitToJson: true)
@ -12,7 +14,13 @@ class Settings {
ThemeMode appTheme;
bool devToolsEnabled;
Settings(this.appTheme, this.devToolsEnabled);
GradeAveragesSettings gradeAveragesSettings;
Settings({
required this.appTheme,
required this.devToolsEnabled,
required this.gradeAveragesSettings
});
static String _themeToJson(ThemeMode m) => m.name;
static ThemeMode _themeFromJson(String m) => ThemeMode.values.firstWhere((element) => element.name == m);

View File

@ -7,11 +7,14 @@ part of 'settings.dart';
// **************************************************************************
Settings _$SettingsFromJson(Map<String, dynamic> json) => Settings(
Settings._themeFromJson(json['appTheme'] as String),
json['devToolsEnabled'] as bool,
appTheme: Settings._themeFromJson(json['appTheme'] as String),
devToolsEnabled: json['devToolsEnabled'] as bool,
gradeAveragesSettings: GradeAveragesSettings.fromJson(
json['gradeAveragesSettings'] as Map<String, dynamic>),
);
Map<String, dynamic> _$SettingsToJson(Settings instance) => <String, dynamic>{
'appTheme': Settings._themeToJson(instance.appTheme),
'devToolsEnabled': instance.devToolsEnabled,
'gradeAveragesSettings': instance.gradeAveragesSettings.toJson(),
};

View File

@ -1,6 +1,7 @@
import 'dart:convert';
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:marianum_mobile/storage/gradeAverages/gradeAveragesSettings.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'settings.dart';
@ -42,8 +43,12 @@ class SettingsProvider extends ChangeNotifier {
Settings _defaults() {
return Settings(
ThemeMode.system,
false,
appTheme: ThemeMode.system,
devToolsEnabled: false,
gradeAveragesSettings: GradeAveragesSettings(
useGradeSystem: true,
inputs: []
),
);
}
}

View File

@ -0,0 +1,15 @@
import 'package:json_annotation/json_annotation.dart';
part 'gradeAveragesSettings.g.dart';
@JsonSerializable()
class GradeAveragesSettings {
bool useGradeSystem;
List<int> inputs;
GradeAveragesSettings({required this.useGradeSystem, required this.inputs});
factory GradeAveragesSettings.fromJson(Map<String, dynamic> json) => _$GradeAveragesSettingsFromJson(json);
Map<String, dynamic> toJson() => _$GradeAveragesSettingsToJson(this);
}

View File

@ -0,0 +1,21 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'gradeAveragesSettings.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
GradeAveragesSettings _$GradeAveragesSettingsFromJson(
Map<String, dynamic> json) =>
GradeAveragesSettings(
useGradeSystem: json['useGradeSystem'] as bool,
inputs: (json['inputs'] as List<dynamic>).map((e) => e as int).toList(),
);
Map<String, dynamic> _$GradeAveragesSettingsToJson(
GradeAveragesSettings instance) =>
<String, dynamic>{
'useGradeSystem': instance.useGradeSystem,
'inputs': instance.inputs,
};