41 lines
965 B
Dart
41 lines
965 B
Dart
import 'package:flutter/material.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
class ThemeModeController with ChangeNotifier {
|
|
ThemeMode _currentThemeMode = ThemeMode.system;
|
|
|
|
ThemeMode get currentThemeMode => _currentThemeMode;
|
|
|
|
Future<void> loadThemeMode() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
final savedMode = prefs.getString('theme_mode');
|
|
if (savedMode != null) {
|
|
switch (savedMode) {
|
|
case 'light':
|
|
_currentThemeMode = ThemeMode.light;
|
|
break;
|
|
case 'dark':
|
|
_currentThemeMode = ThemeMode.dark;
|
|
break;
|
|
default:
|
|
_currentThemeMode = ThemeMode.system;
|
|
}
|
|
notifyListeners();
|
|
}
|
|
}
|
|
|
|
Future<void> toggleThemeMode() async {
|
|
if (_currentThemeMode == ThemeMode.light) {
|
|
_currentThemeMode = ThemeMode.dark;
|
|
} else {
|
|
_currentThemeMode = ThemeMode.light;
|
|
}
|
|
notifyListeners();
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.setString(
|
|
'theme_mode',
|
|
_currentThemeMode == ThemeMode.light ? 'light' : 'dark',
|
|
);
|
|
}
|
|
}
|