From 871706b606c77eeac13bfcea67c3ce1d71203d2c Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Wed, 3 Jun 2020 14:39:52 +0530 Subject: Adds shared preferences for config/theme storage + refactors a streamstate --- lib/data/config.dart | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lib/data/config.dart (limited to 'lib/data') diff --git a/lib/data/config.dart b/lib/data/config.dart new file mode 100644 index 0000000..0dd33cd --- /dev/null +++ b/lib/data/config.dart @@ -0,0 +1,51 @@ +import 'package:shared_preferences/shared_preferences.dart'; +import 'dart:async'; + +String defaultTheme = 'dark'; + +class Config { + String theme = defaultTheme; + Config({ this.theme }) {} + + bool isDarkMode() { + return theme == 'dark'; + } +} + +StreamController config_$ = StreamController.broadcast(); + +Future getConfig() async { + final prefs = await SharedPreferences.getInstance(); + + return Config( + theme: prefs.getString('theme'), + ); +} + +void initConfig() async { + Config c = await getConfig(); + config_$.add(c); +} + +Stream getConfig$() { + return config_$.stream; +} + +void setConfig(Config config) async { + final prefs = await SharedPreferences.getInstance(); + + prefs.setString('theme', config.theme); + + config_$.add(await getConfig()); +} + +void toggleTheme() async { + final config = await getConfig(); + + if (config.theme == 'dark') { + setConfig(Config(theme: 'light')); + } else { + setConfig(Config(theme: 'dark')); + } +} + -- cgit v1.3.1