aboutsummaryrefslogtreecommitdiff
path: root/lib/settings/preferences.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/settings/preferences.dart')
-rw-r--r--lib/settings/preferences.dart35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/settings/preferences.dart b/lib/settings/preferences.dart
new file mode 100644
index 0000000..3c0ef5d
--- /dev/null
+++ b/lib/settings/preferences.dart
@@ -0,0 +1,35 @@
+import 'package:flutter/material.dart';
+import 'package:shared_preferences/shared_preferences.dart';
+
+import '../settings/themes.dart';
+
+class Preferences {
+ static SharedPreferences? _prefs;
+
+ static Future<SharedPreferences> get prefs async {
+ _prefs ??= await SharedPreferences.getInstance();
+ return _prefs!;
+ }
+
+ static Future<ThemeData?> getTheme() async {
+ switch ((await prefs).getString('theme')) {
+ case 'light':
+ return ThemeSettings.lightTheme;
+ case 'dark':
+ return ThemeSettings.darkTheme;
+ }
+ return null;
+ }
+
+ static void setTheme(ThemeData? theme) {
+ prefs.then((p) {
+ if (theme == ThemeSettings.lightTheme) {
+ p.setString('theme', 'light');
+ } else if (theme == ThemeSettings.darkTheme) {
+ p.setString('theme', 'dark');
+ } else {
+ p.remove('theme');
+ }
+ });
+ }
+}