factor:布局颜色重构

This commit is contained in:
2025-11-20 11:04:29 +08:00
parent a582ebb3e4
commit 6e97d7f33f
16 changed files with 311 additions and 284 deletions

View File

@@ -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',