diff options
Diffstat (limited to 'lib/settings/preferences.dart')
-rw-r--r-- | lib/settings/preferences.dart | 35 |
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'); + } + }); + } +} |