Files
listenmeister/lib/providers/theme.dart
2025-10-26 14:10:13 +01:00

51 lines
1.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class ThemeProvider extends ChangeNotifier {
final SharedPreferences _prefs;
static const String _themeKey = 'theme_mode';
ThemeMode _themeMode = ThemeMode.system;
ThemeMode get themeMode => _themeMode;
ThemeProvider(this._prefs) {
_loadTheme();
}
void _loadTheme() {
final themeString = _prefs.getString(_themeKey);
switch (themeString) {
case 'light':
_themeMode = ThemeMode.light;
break;
case 'dark':
_themeMode = ThemeMode.dark;
break;
default:
_themeMode = ThemeMode.system;
break;
}
}
Future<void> setThemeMode(ThemeMode mode) async {
if (mode == _themeMode) return;
_themeMode = mode;
notifyListeners();
String themeString;
switch (mode) {
case ThemeMode.light:
themeString = 'light';
break;
case ThemeMode.dark:
themeString = 'dark';
break;
case ThemeMode.system:
default:
themeString = 'system';
break;
}
await _prefs.setString(_themeKey, themeString);
}
}