import 'package:flutter/material.dart'; class ThemeColor { final String name; final Color primaryColor; final MaterialColor materialColor; ThemeColor({ required this.name, required this.primaryColor, required this.materialColor, }); } class AppProvider with ChangeNotifier { int _currentTab = 0; bool _isDarkMode = false; ThemeColor _currentTheme = _defaultThemes[0]; // 预定义主题色 static final List _defaultThemes = [ ThemeColor( name: '科技蓝', primaryColor: Color(0xFF2563EB), materialColor: MaterialColor(0xFF2563EB, { 50: Color(0xFFDBEAFE), 100: Color(0xFFBFDBFE), 200: Color(0xFF93C5FD), 300: Color(0xFF60A5FA), 400: Color(0xFF3B82F6), 500: Color(0xFF2563EB), 600: Color(0xFF1D4ED8), 700: Color(0xFF1E40AF), 800: Color(0xFF1E3A8A), 900: Color(0xFF1E3A8A), }), ), ThemeColor( name: '翡翠绿', primaryColor: Color(0xFF10B981), materialColor: MaterialColor(0xFF10B981, { 50: Color(0xFFECFDF5), 100: Color(0xFFD1FAE5), 200: Color(0xFFA7F3D0), 300: Color(0xFF6EE7B7), 400: Color(0xFF34D399), 500: Color(0xFF10B981), 600: Color(0xFF059669), 700: Color(0xFF047857), 800: Color(0xFF065F46), 900: Color(0xFF064E3B), }), ), ThemeColor( name: '活力橙', primaryColor: Color(0xFFF59E0B), materialColor: MaterialColor(0xFFF59E0B, { 50: Color(0xFFFFFBEB), 100: Color(0xFFFEF3C7), 200: Color(0xFFFDE68A), 300: Color(0xFFFCD34D), 400: Color(0xFFFBBF24), 500: Color(0xFFF59E0B), 600: Color(0xFFD97706), 700: Color(0xFFB45309), 800: Color(0xFF92400E), 900: Color(0xFF78350F), }), ), ThemeColor( name: '梦幻紫', primaryColor: Color(0xFF8B5CF6), materialColor: MaterialColor(0xFF8B5CF6, { 50: Color(0xFFF5F3FF), 100: Color(0xFFEDE9FE), 200: Color(0xFFDDD6FE), 300: Color(0xFFC4B5FD), 400: Color(0xFFA78BFA), 500: Color(0xFF8B5CF6), 600: Color(0xFF7C3AED), 700: Color(0xFF6D28D9), 800: Color(0xFF5B21B6), 900: Color(0xFF4C1D95), }), ), ThemeColor( name: '浪漫粉', primaryColor: Color(0xFFEC4899), materialColor: MaterialColor(0xFFEC4899, { 50: Color(0xFFFDF2F8), 100: Color(0xFFFCE7F3), 200: Color(0xFFFBCFE8), 300: Color(0xFFF9A8D4), 400: Color(0xFFF472B6), 500: Color(0xFFEC4899), 600: Color(0xFFDB2777), 700: Color(0xFFBE185D), 800: Color(0xFF9D174D), 900: Color(0xFF831843), }), ), ThemeColor( name: '清新青', primaryColor: Color(0xFF06B6D4), materialColor: MaterialColor(0xFF06B6D4, { 50: Color(0xFFF0FDFA), 100: Color(0xFFCCFBF1), 200: Color(0xFF99F6E4), 300: Color(0xFF5EEAD4), 400: Color(0xFF2DD4BF), 500: Color(0xFF06B6D4), 600: Color(0xFF0891B2), 700: Color(0xFF0E7490), 800: Color(0xFF155E75), 900: Color(0xFF164E63), }), ), ThemeColor( name: '深空蓝', primaryColor: Color(0xFF1E40AF), materialColor: MaterialColor(0xFF1E40AF, { 50: Color(0xFFEFF6FF), 100: Color(0xFFDBEAFE), 200: Color(0xFFBFDBFE), 300: Color(0xFF93C5FD), 400: Color(0xFF60A5FA), 500: Color(0xFF3B82F6), 600: Color(0xFF2563EB), 700: Color(0xFF1D4ED8), 800: Color(0xFF1E40AF), 900: Color(0xFF1E3A8A), }), ), ThemeColor( name: '落日红', primaryColor: Color(0xFFEF4444), materialColor: MaterialColor(0xFFEF4444, { 50: Color(0xFFFEF2F2), 100: Color(0xFFFEE2E2), 200: Color(0xFFFECACA), 300: Color(0xFFFCA5A5), 400: Color(0xFFF87171), 500: Color(0xFFEF4444), 600: Color(0xFFDC2626), 700: Color(0xFFB91C1C), 800: Color(0xFF991B1B), 900: Color(0xFF7F1D1D), }), ), ]; int get currentTab => _currentTab; bool get isDarkMode => _isDarkMode; ThemeColor get currentTheme => _currentTheme; List get availableThemes => _defaultThemes; void changeTab(int index) { _currentTab = index; notifyListeners(); } // 切换明暗模式 void toggleDarkMode(bool value) { _isDarkMode = value; notifyListeners(); } // 更改主题色 void changeTheme(ThemeColor theme) { _currentTheme = theme; notifyListeners(); } ThemeData get currentThemeData { return ThemeData( primarySwatch: _currentTheme.materialColor, colorScheme: ColorScheme.fromSeed( seedColor: _currentTheme.primaryColor, brightness: _isDarkMode ? Brightness.dark : Brightness.light, ), useMaterial3: true, fontFamily: 'CustomFont', ); } }