diff --git a/lib/src/mixins/preferences_mixin.dart b/lib/src/mixins/preferences_mixin.dart index e14e1b8..59706cc 100644 --- a/lib/src/mixins/preferences_mixin.dart +++ b/lib/src/mixins/preferences_mixin.dart @@ -1,16 +1,42 @@ import 'package:shared_preferences/shared_preferences.dart'; mixin PreferencesMixin { - void savePreference(key, value) async { + void savePreference(String key, dynamic value) async { final prefs = await SharedPreferences.getInstance(); - prefs.setString(key, value); + if (value is bool) { + prefs.setBool(key, value); + } else if (value is double) { + prefs.setDouble(key, value); + } else if (value is int) { + prefs.setInt(key, value); + } else if (value is String) { + prefs.setString(key, value); + } else if (value is List) { + prefs.setStringList(key, value); + } } - Future getPreference(key) async { + Future getPreference(String key) async { final prefs = await SharedPreferences.getInstance(); if (prefs.containsKey(key)) { - final preference = prefs.getString(key); - return preference ?? false; + if (T == bool) { + return prefs.getBool(key) as T; + } else if (T == double) { + return prefs.getDouble(key) as T; + } else if (T == int) { + return prefs.getInt(key) as T; + } else if (T == String) { + return prefs.getString(key) as T; + } else if (T == List) { + return prefs.getStringList(key) as T; + } + } + } + + Future deletePreference(String key) async { + final prefs = await SharedPreferences.getInstance(); + if (prefs.containsKey(key)) { + prefs.remove(key); } } } diff --git a/lib/src/pages/manager.dart b/lib/src/pages/manager.dart index 987afb1..b7762f2 100644 --- a/lib/src/pages/manager.dart +++ b/lib/src/pages/manager.dart @@ -27,13 +27,11 @@ class _ManagerState extends State with PreferencesMixin { @override void initState() { super.initState(); - getPreference(prefWorkingDirectory).then((pref) { - if (pref is String) { - setState(() { - Directory.current = pref; - }); - Future.delayed(Duration.zero, () => _getVms(context)); // Reload VM list when we enter the page. - } + getPreference(prefWorkingDirectory).then((pref) { + setState(() { + Directory.current = pref; + }); + Future.delayed(Duration.zero, () => _getVms(context)); // Reload VM list when we enter the page. }); refreshTimer = Timer.periodic(const Duration(seconds: 5), (Timer t) { diff --git a/lib/src/widgets/home_page/downloader_menu.dart b/lib/src/widgets/home_page/downloader_menu.dart index f77feaa..bfd6dd6 100644 --- a/lib/src/widgets/home_page/downloader_menu.dart +++ b/lib/src/widgets/home_page/downloader_menu.dart @@ -16,12 +16,10 @@ class _DownloaderMenuState extends State with PreferencesMixin { @override void initState() { super.initState(); - getPreference(prefWorkingDirectory).then((pref) { - if (pref is String) { - setState(() { - Directory.current = pref; - }); - } + getPreference(prefWorkingDirectory).then((pref) { + setState(() { + Directory.current = pref; + }); }); }