import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; /// 主題提供者 - 管理明暗主題切換 /// /// 功能: /// - 支持淺色/深色/跟隨系統三種模式 /// - 持久化主題設置到本地存儲 /// - 提供主題切換方法 class ThemeProvider extends ChangeNotifier { static const String _themeModeKey = 'theme_mode'; ThemeMode _themeMode = ThemeMode.dark; /// 當前主題模式 ThemeMode get themeMode => _themeMode; /// 是否為深色模式 bool get isDarkMode => _themeMode == ThemeMode.dark; /// 初始化主題設置(從本地存儲加載) Future init() async { final prefs = await SharedPreferences.getInstance(); final modeString = prefs.getString(_themeModeKey); if (modeString != null) { _themeMode = ThemeMode.values.firstWhere( (mode) => mode.toString() == modeString, orElse: () => ThemeMode.dark, ); notifyListeners(); } } /// 切換主題(淺色/深色) Future toggleTheme() async { _themeMode = _themeMode == ThemeMode.light ? ThemeMode.dark : ThemeMode.light; await _saveThemeMode(); notifyListeners(); } /// 設置主題模式 Future setThemeMode(ThemeMode mode) async { if (_themeMode == mode) return; _themeMode = mode; await _saveThemeMode(); notifyListeners(); } /// 保存主題設置到本地存儲 Future _saveThemeMode() async { final prefs = await SharedPreferences.getInstance(); await prefs.setString(_themeModeKey, _themeMode.toString()); } }