Inject the shared preferences class for easier testing

This commit is contained in:
Roland Geider
2025-01-24 13:59:08 +01:00
parent 5521d929b1
commit dad109d5bd
26 changed files with 2626 additions and 5987 deletions

View File

@@ -27,8 +27,10 @@ import 'package:wger/providers/base_provider.dart';
class UserProvider with ChangeNotifier {
ThemeMode themeMode = ThemeMode.system;
final WgerBaseProvider baseProvider;
late SharedPreferencesAsync prefs;
UserProvider(this.baseProvider) {
UserProvider(this.baseProvider, {SharedPreferencesAsync? prefs}) {
this.prefs = prefs ?? SharedPreferencesAsync();
_loadThemeMode();
}
@@ -44,15 +46,18 @@ class UserProvider with ChangeNotifier {
// Load theme mode from SharedPreferences
Future<void> _loadThemeMode() async {
final prefs = SharedPreferencesAsync();
final prefsDarkMode = await prefs.getBool(PREFS_USER_DARK_THEME);
print(prefsDarkMode);
if (prefsDarkMode == null) {
themeMode = ThemeMode.system;
} else {
themeMode = prefsDarkMode ? ThemeMode.dark : ThemeMode.light;
}
print(themeMode);
notifyListeners();
}
@@ -61,7 +66,6 @@ class UserProvider with ChangeNotifier {
themeMode = mode;
// Save to SharedPreferences
final prefs = SharedPreferencesAsync();
if (themeMode == ThemeMode.system) {
await prefs.remove(PREFS_USER_DARK_THEME);
} else {