diff --git a/.idea/libraries/Dart_Packages.xml b/.idea/libraries/Dart_Packages.xml
index 5da2980..ad74def 100644
--- a/.idea/libraries/Dart_Packages.xml
+++ b/.idea/libraries/Dart_Packages.xml
@@ -47,7 +47,7 @@
-
+
@@ -131,14 +131,14 @@
-
+
-
+
@@ -152,7 +152,7 @@
-
+
@@ -208,7 +208,7 @@
-
+
@@ -229,7 +229,7 @@
-
+
@@ -257,7 +257,7 @@
-
+
@@ -299,7 +299,7 @@
-
+
@@ -327,35 +327,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -439,7 +411,7 @@
-
+
@@ -488,14 +460,14 @@
-
+
-
+
@@ -530,14 +502,14 @@
-
+
-
+
@@ -555,31 +527,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -635,7 +586,7 @@
-
+
@@ -656,7 +607,7 @@
-
+
@@ -698,7 +649,7 @@
-
+
@@ -754,7 +705,7 @@
-
+
@@ -768,7 +719,7 @@
-
+
@@ -880,7 +831,7 @@
-
+
@@ -1020,63 +971,63 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1104,7 +1055,7 @@
-
+
@@ -1125,7 +1076,7 @@
-
+
@@ -1139,7 +1090,7 @@
-
+
@@ -1174,7 +1125,7 @@
-
+
@@ -1259,15 +1210,15 @@
-
-
+
+
-
+
@@ -1279,10 +1230,10 @@
-
-
+
+
-
+
@@ -1290,14 +1241,14 @@
-
+
-
+
-
+
@@ -1306,11 +1257,7 @@
-
-
-
-
-
+
@@ -1319,25 +1266,22 @@
-
+
-
-
+
+
-
-
+
+
-
-
-
-
+
@@ -1345,10 +1289,10 @@
-
+
-
+
@@ -1361,9 +1305,9 @@
-
+
-
+
@@ -1379,7 +1323,7 @@
-
+
@@ -1398,29 +1342,29 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
diff --git a/.idea/libraries/Flutter_Plugins.xml b/.idea/libraries/Flutter_Plugins.xml
index 87dd116..e0b5f46 100644
--- a/.idea/libraries/Flutter_Plugins.xml
+++ b/.idea/libraries/Flutter_Plugins.xml
@@ -20,23 +20,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 6e86672..00a4da9 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -2,4 +2,7 @@
+
+
+
\ No newline at end of file
diff --git a/lib/api/holidays/getHolidays.dart b/lib/api/holidays/getHolidays.dart
index 1aff999..f8a4a4c 100644
--- a/lib/api/holidays/getHolidays.dart
+++ b/lib/api/holidays/getHolidays.dart
@@ -7,7 +7,12 @@ import 'getHolidaysResponse.dart';
class GetHolidays {
Future query() async {
String response = (await http.get(Uri.parse("https://ferien-api.de/api/v1/holidays/HE"))).body;
- List parsedListJson = jsonDecode(response);
- return GetHolidaysResponse(List.from(parsedListJson.map((dynamic i) => GetHolidaysResponseObject.fromJson(i))));
+ return GetHolidaysResponse(
+ List.from(
+ jsonDecode(response).map(
+ (dynamic i) => GetHolidaysResponseObject.fromJson(i)
+ )
+ )
+ );
}
}
\ No newline at end of file
diff --git a/lib/api/holidays/getHolidaysCache.dart b/lib/api/holidays/getHolidaysCache.dart
index fe7abb7..3c15db7 100644
--- a/lib/api/holidays/getHolidaysCache.dart
+++ b/lib/api/holidays/getHolidaysCache.dart
@@ -12,7 +12,13 @@ class GetHolidaysCache extends RequestCache {
@override
GetHolidaysResponse onLocalData(String json) {
List parsedListJson = jsonDecode(json)['data'];
- return GetHolidaysResponse(List.from(parsedListJson.map((dynamic i) => GetHolidaysResponseObject.fromJson(i))));
+ return GetHolidaysResponse(
+ List.from(
+ parsedListJson.map(
+ (dynamic i) => GetHolidaysResponseObject.fromJson(i)
+ )
+ )
+ );
}
@override
diff --git a/lib/api/marianumcloud/talk/setFavorite/setFavorite.dart b/lib/api/marianumcloud/talk/setFavorite/setFavorite.dart
index ce331cf..1d4d44d 100644
--- a/lib/api/marianumcloud/talk/setFavorite/setFavorite.dart
+++ b/lib/api/marianumcloud/talk/setFavorite/setFavorite.dart
@@ -11,9 +11,7 @@ class SetFavorite extends TalkApi {
SetFavorite(this.chatToken, this.favoriteState) : super("v4/room/$chatToken/favorite", null);
@override
- assemble(String raw) {
-
- }
+ assemble(String raw) {}
@override
Future request(Uri uri, Object? body, Map? headers) {
diff --git a/lib/main.dart b/lib/main.dart
index 5b9bd46..b31850a 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -95,8 +95,6 @@ class _MainState extends State {
themeMode: settings.val().appTheme,
theme: LightAppTheme.theme,
darkTheme: DarkAppTheme.theme,
-
-
home: Consumer(
builder: (context, accountModel, child) {
switch(accountModel.state) {
diff --git a/lib/storage/base/settingsProvider.dart b/lib/storage/base/settingsProvider.dart
index 6b40a00..2247198 100644
--- a/lib/storage/base/settingsProvider.dart
+++ b/lib/storage/base/settingsProvider.dart
@@ -25,19 +25,31 @@ class SettingsProvider extends ChangeNotifier {
}
SettingsProvider() {
- init();
+ _readFromStorage();
}
- void init({bool resetConfig = false}) async {
+ void reset() async {
_storage = await SharedPreferences.getInstance();
+ _storage.remove(_fieldName);
- if(resetConfig) _storage.remove(_fieldName);
+ notifyListeners();
+ }
+
+ void _readFromStorage() async {
+ _storage = await SharedPreferences.getInstance();
try {
_settings = Settings.fromJson(jsonDecode(_storage.getString(_fieldName)!));
- } catch(e) {
- log("Settings are defective, using defaults: ${e.toString()}");
- _settings = _defaults();
+ } catch(exception) {
+ try {
+ log("Settings were changed, trying to recover from old Settings: ${exception.toString()}");
+ _settings = Settings.fromJson(_mergeSettings(jsonDecode(_storage.getString(_fieldName)!), _defaults().toJson()));
+ log("Settings recovered successfully: ${_settings.toJson().toString()}");
+ } catch(exception) {
+ log("Settings are defective and not recoverable, using defaults: ${exception.toString()}");
+ _settings = _defaults();
+ log("Settings were reset to defaults!");
+ }
}
notifyListeners();
@@ -47,6 +59,22 @@ class SettingsProvider extends ChangeNotifier {
await _storage.setString(_fieldName, jsonEncode(_settings.toJson()));
}
+ Map _mergeSettings(Map oldMap, Map newMap) {
+ Map mergedMap = Map.from(newMap);
+
+ oldMap.forEach((key, value) {
+ if (mergedMap.containsKey(key)) {
+ if (value is Map && mergedMap[key] is Map) {
+ mergedMap[key] = _mergeSettings(value, mergedMap[key]);
+ } else {
+ mergedMap[key] = value;
+ }
+ }
+ });
+
+ return mergedMap;
+ }
+
Settings _defaults() {
return Settings(
appTheme: ThemeMode.system,
diff --git a/lib/view/settings/settings.dart b/lib/view/settings/settings.dart
index bd2731f..1847dd1 100644
--- a/lib/view/settings/settings.dart
+++ b/lib/view/settings/settings.dart
@@ -39,7 +39,6 @@ class _SettingsState extends State {
),
body: ListView(
children: [
-
ListTile(
leading: const Icon(Icons.logout_outlined),
title: const Text("Konto abmelden"),
@@ -248,7 +247,7 @@ class _SettingsState extends State {
confirmButton: "Unwiederruflich Löschen",
onConfirm: () {
setState(() {
- Provider.of(context, listen: false).init(resetConfig: true);
+ Provider.of(context, listen: false).reset();
});
},
).asDialog(context);
diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc
index 7299b5c..f6f23bf 100644
--- a/linux/flutter/generated_plugin_registrant.cc
+++ b/linux/flutter/generated_plugin_registrant.cc
@@ -6,13 +6,9 @@
#include "generated_plugin_registrant.h"
-#include
#include
void fl_register_plugins(FlPluginRegistry* registry) {
- g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
- fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
- file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake
index 786ff5c..f16b4c3 100644
--- a/linux/flutter/generated_plugins.cmake
+++ b/linux/flutter/generated_plugins.cmake
@@ -3,7 +3,6 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
- file_selector_linux
url_launcher_linux
)
diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift
index 9d5f78f..7026e66 100644
--- a/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -6,7 +6,6 @@ import FlutterMacOS
import Foundation
import device_info_plus
-import file_selector_macos
import package_info
import path_provider_foundation
import shared_preferences_foundation
@@ -16,7 +15,6 @@ import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
- FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
FLTPackageInfoPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc
index 779f0ee..9871f6b 100644
--- a/windows/flutter/generated_plugin_registrant.cc
+++ b/windows/flutter/generated_plugin_registrant.cc
@@ -6,13 +6,10 @@
#include "generated_plugin_registrant.h"
-#include
#include
#include
void RegisterPlugins(flutter::PluginRegistry* registry) {
- FileSelectorWindowsRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("FileSelectorWindows"));
SyncfusionPdfviewerWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("SyncfusionPdfviewerWindowsPlugin"));
UrlLauncherWindowsRegisterWithRegistrar(
diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake
index 3757972..2487723 100644
--- a/windows/flutter/generated_plugins.cmake
+++ b/windows/flutter/generated_plugins.cmake
@@ -3,7 +3,6 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
- file_selector_windows
syncfusion_pdfviewer_windows
url_launcher_windows
)