Made PreferencesMixin generic
This commit is contained in:
parent
66c0e5fae8
commit
b37600f7e1
|
|
@ -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<String>) {
|
||||
prefs.setStringList(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
Future getPreference(key) async {
|
||||
Future<T?> getPreference<T>(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<void> deletePreference(String key) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
if (prefs.containsKey(key)) {
|
||||
prefs.remove(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,13 +27,11 @@ class _ManagerState extends State<Manager> 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<String>(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) {
|
||||
|
|
|
|||
|
|
@ -16,12 +16,10 @@ class _DownloaderMenuState extends State<DownloaderMenu> with PreferencesMixin {
|
|||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
getPreference(prefWorkingDirectory).then((pref) {
|
||||
if (pref is String) {
|
||||
setState(() {
|
||||
Directory.current = pref;
|
||||
});
|
||||
}
|
||||
getPreference<String>(prefWorkingDirectory).then((pref) {
|
||||
setState(() {
|
||||
Directory.current = pref;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue