Made PreferencesMixin generic
This commit is contained in:
parent
66c0e5fae8
commit
b37600f7e1
|
|
@ -1,16 +1,42 @@
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
mixin PreferencesMixin {
|
mixin PreferencesMixin {
|
||||||
void savePreference(key, value) async {
|
void savePreference(String key, dynamic value) async {
|
||||||
final prefs = await SharedPreferences.getInstance();
|
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();
|
final prefs = await SharedPreferences.getInstance();
|
||||||
if (prefs.containsKey(key)) {
|
if (prefs.containsKey(key)) {
|
||||||
final preference = prefs.getString(key);
|
if (T == bool) {
|
||||||
return preference ?? false;
|
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
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
getPreference(prefWorkingDirectory).then((pref) {
|
getPreference<String>(prefWorkingDirectory).then((pref) {
|
||||||
if (pref is String) {
|
setState(() {
|
||||||
setState(() {
|
Directory.current = pref;
|
||||||
Directory.current = pref;
|
});
|
||||||
});
|
Future.delayed(Duration.zero, () => _getVms(context)); // Reload VM list when we enter the page.
|
||||||
Future.delayed(Duration.zero, () => _getVms(context)); // Reload VM list when we enter the page.
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
refreshTimer = Timer.periodic(const Duration(seconds: 5), (Timer t) {
|
refreshTimer = Timer.periodic(const Duration(seconds: 5), (Timer t) {
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,10 @@ class _DownloaderMenuState extends State<DownloaderMenu> with PreferencesMixin {
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
getPreference(prefWorkingDirectory).then((pref) {
|
getPreference<String>(prefWorkingDirectory).then((pref) {
|
||||||
if (pref is String) {
|
setState(() {
|
||||||
setState(() {
|
Directory.current = pref;
|
||||||
Directory.current = pref;
|
});
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue