Made GradeAverage persistent
This commit is contained in:
54
lib/storage/base/settingsProvider.dart
Normal file
54
lib/storage/base/settingsProvider.dart
Normal file
@ -0,0 +1,54 @@
|
||||
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';
|
||||
|
||||
class SettingsProvider extends ChangeNotifier {
|
||||
static const String _fieldName = "settings";
|
||||
|
||||
late SharedPreferences _storage;
|
||||
late Settings _settings = _defaults();
|
||||
|
||||
Settings val({bool write = false}) {
|
||||
if(write) {
|
||||
notifyListeners();
|
||||
Future.delayed(const Duration(milliseconds: 300)).then((_) => update());
|
||||
}
|
||||
return _settings;
|
||||
}
|
||||
|
||||
SettingsProvider() {
|
||||
init();
|
||||
}
|
||||
|
||||
void init() async {
|
||||
_storage = await SharedPreferences.getInstance();
|
||||
|
||||
if(_storage.containsKey(_fieldName)) {
|
||||
log("Settings from disk: ${_storage.getString(_fieldName)}");
|
||||
_settings = Settings.fromJson(jsonDecode(_storage.getString(_fieldName)!));
|
||||
} else {
|
||||
_settings = _defaults();
|
||||
}
|
||||
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void update() async {
|
||||
await _storage.setString(_fieldName, jsonEncode(_settings.toJson()));
|
||||
}
|
||||
|
||||
Settings _defaults() {
|
||||
return Settings(
|
||||
appTheme: ThemeMode.system,
|
||||
devToolsEnabled: false,
|
||||
gradeAveragesSettings: GradeAveragesSettings(
|
||||
useGradeSystem: true,
|
||||
inputs: []
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user