# 修复主题切换 - 动态颜色系统 You are running a development task using the **monisuo-dev skill** workflow. ## 问题诊断 当前代码存在严重问题: - ❌ **所有颜色都是硬编码的** `AppColorScheme.dark*` - ❌ **主题切换功能不生效** - ❌ **只有深色主题,没有浅色主题** ## 目标 修复主题切换功能,确保所有页面支持明暗主题动态切换。 ## 参考文件 - **Feature Spec**: `docs/features/theme-dynamic-colors.md` (必读) - **ThemeProvider**: `lib/providers/theme_provider.dart` (已存在) - **颜色系统**: `lib/core/theme/app_color_scheme.dart` ## 任务清单 ### Phase 1: 检查 ThemeProvider (15分钟) 1. **检查 ThemeProvider 实现** ```dart // lib/providers/theme_provider.dart - 确保主题切换逻辑正确 - 确保持久化工作正常 ``` 2. **检查主题配置** ```dart // lib/core/theme/app_theme.dart - 确保 lightTheme 和 darkTheme 都已定义 - 确保 ShadTheme 配置正确 ``` ### Phase 2: 修复所有页面的颜色 (90分钟) 3. **替换所有硬编码颜色** **通用替换规则**: ```dart // ❌ 错误 - 硬编码 AppColorScheme.darkBackground AppColorScheme.darkOnSurface AppColorScheme.darkPrimary AppColorScheme.darkSecondary // ... 等等 // ✅ 正确 - 动态 Theme.of(context).colorScheme.background Theme.of(context).colorScheme.onSurface Theme.of(context).colorScheme.primary Theme.of(context).colorScheme.secondary ``` 4. **需要修改的文件**(按优先级): **P0 - 主要页面**: - `lib/ui/pages/home/home_page.dart` - `lib/ui/pages/market/market_page.dart` - `lib/ui/pages/trade/trade_page.dart` - `lib/ui/pages/asset/asset_page.dart` - `lib/ui/pages/mine/mine_page.dart` **P1 - 订单页面**: - `lib/ui/pages/orders/orders_page.dart` - `lib/ui/pages/orders/fund_order_card.dart` - `lib/ui/pages/orders/fund_orders_list.dart` - `lib/ui/pages/orders/fund_orders_page.dart` **P2 - 组件**: - `lib/ui/components/glass_panel.dart` - `lib/ui/components/neon_glow.dart` - `lib/ui/components/gradient_button.dart` - `lib/ui/components/asset_card.dart` - `lib/ui/components/coin_card.dart` - `lib/ui/components/trade_button.dart` 5. **特殊处理**: - **GlassPanel**: 需要根据主题调整透明度 - **NeonGlow**: 需要根据主题调整光效强度 - **渐变按钮**: 需要根据主题调整渐变色 ### Phase 3: 测试验证 (15分钟) 6. **运行代码分析** ```bash flutter analyze ``` - 确保 0 errors 7. **测试主题切换** ```bash flutter run -d chrome ``` - 测试深色主题 - 测试浅色主题 - 测试主题切换动画 - 验证所有页面响应主题变化 8. **视觉验证** - 检查对比度(WCAG AA 标准) - 检查颜色一致性 - 检查主题切换流畅度 ### Phase 4: 构建部署 (10分钟) 9. **构建生产版本** ```bash flutter build web --release --dart-define=ENV=prod ``` 10. **提交代码** ```bash git add . git commit -m "fix(ui): 修复主题切换功能,支持明暗主题动态切换 - 替换所有硬编码颜色为动态颜色 - 所有页面使用 Theme.of(context) - 支持深色和浅色主题切换 - 修复 GlassPanel 和 NeonGlow 组件的主题适配 - 测试主题切换功能正常" git push ``` ## 颜色映射表 | 硬编码颜色 | 动态颜色 | |-----------|---------| | `AppColorScheme.darkBackground` | `Theme.of(context).colorScheme.background` | | `AppColorScheme.darkOnSurface` | `Theme.of(context).colorScheme.onSurface` | | `AppColorScheme.darkOnSurfaceVariant` | `Theme.of(context).colorScheme.onSurfaceVariant` | | `AppColorScheme.darkPrimary` | `Theme.of(context).colorScheme.primary` | | `AppColorScheme.darkSecondary` | `Theme.of(context).colorScheme.secondary` | | `AppColorScheme.darkTertiary` | `Theme.of(context).colorScheme.tertiary` | | `AppColorScheme.darkSurface` | `Theme.of(context).colorScheme.surface` | | `AppColorScheme.darkSurfaceBright` | `Theme.of(context).colorScheme.surfaceBright` | | `AppColorScheme.darkSurfaceContainer` | `Theme.of(context).colorScheme.surfaceContainer` | | `AppColorScheme.darkSurfaceHigh` | `Theme.of(context).colorScheme.surfaceContainerHigh` | | `AppColorScheme.darkOutline` | `Theme.of(context).colorScheme.outline` | | `AppColorScheme.darkOutlineVariant` | `Theme.of(context).colorScheme.outlineVariant` | | `AppColorScheme.neonGlowPrimary` | `Theme.of(context).colorScheme.primary.withOpacity(0.15)` | ## 特殊组件处理 ### GlassPanel ```dart // ❌ 错误 color: AppColorScheme.darkSurfaceBright.withValues(alpha: 0.4) // ✅ 正确 color: Theme.of(context).colorScheme.surfaceBright.withOpacity( Theme.of(context).brightness == Brightness.dark ? 0.4 : 0.6 ) ``` ### NeonGlow ```dart // ❌ 错误 BoxShadow( color: AppColorScheme.neonGlowPrimary, blurRadius: 15, ) // ✅ 正确 BoxShadow( color: Theme.of(context).colorScheme.primary.withOpacity( Theme.of(context).brightness == Brightness.dark ? 0.15 : 0.08 ), blurRadius: 15, ) ``` ## 执行规则 1. **逐个文件修改** - 不要批量修改 2. **测试每个页面** - 修改完一个页面就测试 3. **保持功能不变** - 只修改颜色,不修改逻辑 4. **确保主题切换流畅** - 避免闪烁 5. **保持中文字符** - 不要修改任何中文文字 ## 完成标准 - ✅ 所有页面使用动态颜色 - ✅ 主题切换功能正常 - ✅ 深色主题显示正常 - ✅ 浅色主题显示正常 - ✅ flutter analyze 0 errors - ✅ 所有功能正常 - ✅ 所有中文文字保持不变 --- **开始执行吧!让主题切换功能正常工作!** 🚀🎨