import 'package:shared_preferences/shared_preferences.dart'; import 'package:smoke_cess_app/models/settings.dart'; import 'package:smoke_cess_app/service/json_service.dart'; //access group setting which was saved in local storage Future getGroup() => _getStringSetting('group'); Future?> getRelapseCategories() => _getStringListSetting('relapse_categories'); Future?> getSleepQueryDaysCategories() => _getStringListSetting('sleep_query_days'); Future getSleepQueryHours() => _getIntSetting('sleep_query_hours'); Future getSleepQueryMinutes() => _getIntSetting('sleep_query_minutes'); Future?> getMoodQueryDaysCategories() => _getStringListSetting('mood_query_days'); Future getMoodQueryHours() => _getIntSetting('mood_query_hours'); Future getMoodQueryMinutes() => _getIntSetting('mood_query_minutes'); void _setStringSetting(String settingKey, String settingValue) => SharedPreferences.getInstance() .then((pref) => pref.setString(settingKey, settingValue)); Future _getStringSetting(String settingKey) => SharedPreferences.getInstance().then((pref) => pref.getString(settingKey)); void _setIntSetting(String settingKey, int settingValue) => SharedPreferences.getInstance() .then((pref) => pref.setInt(settingKey, settingValue)); Future _getIntSetting(String settingKey) => SharedPreferences.getInstance().then((pref) => pref.getInt(settingKey)); void _setStringListSetting(String settingKey, List list) => SharedPreferences.getInstance() .then((pref) => pref.setStringList(settingKey, list)); Future?> _getStringListSetting(String settingKey) => SharedPreferences.getInstance() .then((pref) => pref.getStringList(settingKey)); //Add other setters and getters if needed //other possible SharedPreferences Types: Int, Bool, Double, StringList //see https://pub.dev/packages/shared_preferences Future loadSettings() async { Map configJSON = await loadLocalConfigJSON(); Settings settings = Settings.fromJson(configJSON); saveSettings(settings); } void saveSettings(Settings settings) { _setStringSetting('group', settings.group); _setStringListSetting('relapse_categories', settings.relapseCategories!); _setStringListSetting('mood_query_days', settings.moodQuery.days!); _setIntSetting('mood_query_hours', settings.moodQuery.hours); _setIntSetting('mood_query_minutes', settings.moodQuery.minutes); _setStringListSetting('sleep_query_days', settings.sleepQuery.days!); _setIntSetting('sleep_query_hours', settings.sleepQuery.hours); _setIntSetting('sleep_query_minutes', settings.sleepQuery.minutes); }