Theme
This commit is contained in:
40
lib/config/theme_mode_controller.dart
Normal file
40
lib/config/theme_mode_controller.dart
Normal file
@@ -0,0 +1,40 @@
|
||||
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',
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user