Files
TravelMate/lib/providers/theme_provider.dart

51 lines
1.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class ThemeProvider extends ChangeNotifier {
ThemeMode _themeMode = ThemeMode.system;
ThemeMode get themeMode => _themeMode;
bool get isDarkMode {
if (_themeMode == ThemeMode.system) {
return WidgetsBinding.instance.platformDispatcher.platformBrightness ==
Brightness.dark;
}
return _themeMode == ThemeMode.dark;
}
ThemeProvider() {
_loadThemeMode();
}
void setThemeMode(ThemeMode themeMode) async {
_themeMode = themeMode;
notifyListeners();
// Sauvegarder la préférence
final prefs = await SharedPreferences.getInstance();
await prefs.setString('themeMode', themeMode.toString());
}
void _loadThemeMode() async {
final prefs = await SharedPreferences.getInstance();
final themeModeString = prefs.getString('themeMode');
if (themeModeString != null) {
switch (themeModeString) {
case 'ThemeMode.light':
_themeMode = ThemeMode.light;
break;
case 'ThemeMode.dark':
_themeMode = ThemeMode.dark;
break;
case 'ThemeMode.system':
default:
_themeMode = ThemeMode.system;
break;
}
notifyListeners();
}
}
}