factor:布局颜色重构
This commit is contained in:
@@ -6,15 +6,17 @@ import 'package:shared_preferences/shared_preferences.dart';
|
||||
class AppProvider with ChangeNotifier {
|
||||
static const String _themeKey = 'selected_theme';
|
||||
static const String _darkModeKey = 'is_dark_mode';
|
||||
static const List<String> appBarTitles = ['闪灵', '待办', '日程', '统计'];
|
||||
|
||||
int _currentTab = 0;
|
||||
bool _isDarkMode = false;
|
||||
ThemeColor _currentTheme = defaultThemes[0];
|
||||
String _appVersion = '1.0.0';
|
||||
String _buildNumber = '1';
|
||||
int currentTab = 0;
|
||||
String currentAppBarTitle = '闪灵';
|
||||
bool isDarkMode = false;
|
||||
ThemeColor currentTheme = defaultThemes[0];
|
||||
String appVersion = '1.0.0';
|
||||
String buildNumber = '1';
|
||||
|
||||
late SharedPreferences _prefs;
|
||||
bool _isInitialized = false;
|
||||
bool isInitialized = false;
|
||||
|
||||
AppProvider() {
|
||||
_initPreferences();
|
||||
@@ -26,26 +28,26 @@ class AppProvider with ChangeNotifier {
|
||||
_loadPreferences();
|
||||
await _getVersionInfo();
|
||||
|
||||
_isInitialized = true;
|
||||
isInitialized = true;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
// 加载存储的设置
|
||||
void _loadPreferences() {
|
||||
_isDarkMode = _prefs.getBool(_darkModeKey) ?? false;
|
||||
isDarkMode = _prefs.getBool(_darkModeKey) ?? false;
|
||||
|
||||
// 加载主题色
|
||||
final themeName = _prefs.getString(_themeKey);
|
||||
if (themeName != null) {
|
||||
_currentTheme = getThemeColor(themeName);
|
||||
currentTheme = getThemeColor(themeName);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _getVersionInfo() async {
|
||||
try {
|
||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||
_appVersion = packageInfo.version;
|
||||
_buildNumber = packageInfo.buildNumber;
|
||||
appVersion = packageInfo.version;
|
||||
buildNumber = packageInfo.buildNumber;
|
||||
notifyListeners();
|
||||
} catch (e) {
|
||||
print('获取版本信息失败: $e');
|
||||
@@ -54,51 +56,44 @@ class AppProvider with ChangeNotifier {
|
||||
|
||||
// 保存主题色
|
||||
Future<void> _saveTheme() async {
|
||||
await _prefs.setString(_themeKey, _currentTheme.name);
|
||||
await _prefs.setString(_themeKey, currentTheme.name);
|
||||
}
|
||||
|
||||
// 保存暗黑模式
|
||||
Future<void> _saveDarkMode() async {
|
||||
await _prefs.setBool(_darkModeKey, _isDarkMode);
|
||||
await _prefs.setBool(_darkModeKey, isDarkMode);
|
||||
}
|
||||
|
||||
int get currentTab => _currentTab;
|
||||
|
||||
bool get isDarkMode => _isDarkMode;
|
||||
|
||||
ThemeColor get currentTheme => _currentTheme;
|
||||
|
||||
List<ThemeColor> get availableThemes => defaultThemes;
|
||||
|
||||
bool get isInitialized => _isInitialized;
|
||||
|
||||
String get fullVersion => '$_appVersion+$_buildNumber';
|
||||
String get fullVersion => '$appVersion+$buildNumber';
|
||||
|
||||
void changeTab(int index) {
|
||||
_currentTab = index;
|
||||
currentTab = index;
|
||||
currentAppBarTitle = appBarTitles[index];
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
// 切换明暗模式
|
||||
void toggleDarkMode(bool value) {
|
||||
_isDarkMode = value;
|
||||
isDarkMode = value;
|
||||
_saveDarkMode();
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
// 更改主题色
|
||||
void changeTheme(ThemeColor theme) {
|
||||
_currentTheme = theme;
|
||||
currentTheme = theme;
|
||||
_saveTheme();
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
ThemeData get currentThemeData {
|
||||
return ThemeData(
|
||||
primarySwatch: _currentTheme.materialColor,
|
||||
primarySwatch: currentTheme.materialColor,
|
||||
colorScheme: ColorScheme.fromSeed(
|
||||
seedColor: _currentTheme.primaryColor,
|
||||
brightness: _isDarkMode ? Brightness.dark : Brightness.light,
|
||||
seedColor: currentTheme.primaryColor,
|
||||
brightness: isDarkMode ? Brightness.dark : Brightness.light,
|
||||
),
|
||||
useMaterial3: true,
|
||||
fontFamily: 'CustomFont',
|
||||
|
||||
Reference in New Issue
Block a user