diff --git a/frontend/lib/services/shared_preferences_service.dart b/frontend/lib/services/shared_preferences_service.dart new file mode 100644 index 00000000..df100316 --- /dev/null +++ b/frontend/lib/services/shared_preferences_service.dart @@ -0,0 +1,106 @@ +import 'package:shared_preferences/shared_preferences.dart'; + +class SharedPreferencesService { + SharedPreferencesService._privateConstructor(); + + static final SharedPreferencesService instance = + SharedPreferencesService._privateConstructor(); + + Future _prefs = SharedPreferences.getInstance(); + + /// Sets a boolean [value] for the given [key] in the shared preferences. + /// + /// Example: + /// ```dart + /// await prefsService.setBool('isLoggedIn', true); + /// ``` + Future setBool(String key, bool value) async { + final prefs = await _prefs; + prefs.setBool(key, value); + } + + /// Sets a string [value] for the given [key] in the shared preferences. + /// + /// Example: + /// ```dart + /// await prefsService.setString('username', 'Alice'); + /// ``` + Future setString(String key, String value) async { + final prefs = await _prefs; + prefs.setString(key, value); + } + + /// Sets an integer [value] for the given [key] in the shared preferences. + /// + /// Example: + /// ```dart + /// await prefsService.setInt('age', 30); + /// ``` + Future setInt(String key, int value) async { + final prefs = await _prefs; + prefs.setInt(key, value); + } + + /// Sets a list of strings [value] for the given [key] in the shared preferences. + /// + /// Example: + /// ```dart + /// await prefsService.setStringList('favorites', ['Apples', 'Bananas']); + /// ``` + Future setStringList(String key, List value) async { + final prefs = await _prefs; + prefs.setStringList(key, value); + } + + /// Retrieves a boolean value for the given [key] from the shared preferences. + /// + /// Returns `null` if the key does not exist. + /// + /// Example: + /// ```dart + /// bool? isLoggedIn = await prefsService.getBool('isLoggedIn'); + /// ``` + Future getBool(String key) async { + final prefs = await _prefs; + return prefs.getBool(key); + } + + /// Retrieves a string value for the given [key] from the shared preferences. + /// + /// Returns `null` if the key does not exist. + /// + /// Example: + /// ```dart + /// String? username = await prefsService.getString('username'); + /// ``` + Future getString(String key) async { + final prefs = await _prefs; + return prefs.getString(key); + } + + /// Retrieves an integer value for the given [key] from the shared preferences. + /// + /// Returns `null` if the key does not exist. + /// + /// Example: + /// ```dart + /// int? age = await prefsService.getInt('age'); + /// ``` + Future getInt(String key) async { + final prefs = await _prefs; + return prefs.getInt(key); + } + + /// Retrieves a list of strings for the given [key] from the shared preferences. + /// + /// Returns `null` if the key does not exist. + /// + /// Example: + /// ```dart + /// List? favorites = await prefsService.getStringList('favorites'); + /// ``` + Future?> getStringList(String key) async { + final prefs = await _prefs; + return prefs.getStringList(key); + } +} diff --git a/frontend/lib/viewmodels/settings_viewmodel.dart b/frontend/lib/viewmodels/settings_viewmodel.dart index cb63cb69..74b55f7e 100644 --- a/frontend/lib/viewmodels/settings_viewmodel.dart +++ b/frontend/lib/viewmodels/settings_viewmodel.dart @@ -30,7 +30,6 @@ class SettingsViewModel extends ChangeNotifier { Future _loadPreferences() async { final prefs = await SharedPreferences.getInstance(); _isDarkModeEnabled = prefs.getBool('isDarkModeEnabled') ?? false; - // TODO: We should make this disable test suites _isDeveloperModeEnabled = prefs.getBool('isDeveloperModeEnabled') ?? true; _baseURL = prefs.getString('baseURL') ?? 'http://127.0.0.1:8000/ap/v1'; _restApiUtility.updateBaseURL(_baseURL);