Files
social-app/docs/bugs/AppTheme硬编码颜色且缺失DarkMode.md
T

91 lines
1.9 KiB
Markdown
Raw Normal View History

# AppTheme 硬编码颜色且缺失 Dark Mode
## 问题描述
### 1. 颜色硬编码
`AppTheme` 和各组件大量直接引用 `AppColors` 静态常量,而非 `Theme.of(context).colorScheme`
```dart
// app_theme.dart
appBarTheme: const AppBarTheme(
backgroundColor: AppColors.background, // 硬编码
foregroundColor: AppColors.slate900, // 硬编码
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: AppColors.primary, // 硬编码
foregroundColor: AppColors.primaryForeground,
),
),
```
这导致:
- 主题切换时颜色不会改变
- 组件无法响应系统深色模式
- 违反 Flutter Material Design 规范
### 2. 缺失 Dark Mode
`AppTheme` 只有 `light` getter,没有 `dark`
```dart
static ThemeData get light => ThemeData(...);
```
`LinksyApp` 硬编码使用 light
```dart
theme: AppTheme.light,
locale: const Locale('zh'),
```
## 正确做法
### 颜色应使用 ThemeData
```dart
// 正确示例
appBarTheme: AppBarTheme(
backgroundColor: Theme.of(context).colorScheme.surface,
foregroundColor: Theme.of(context).colorScheme.onSurface,
),
// ColorScheme 应由 ThemeData 生成
colorScheme: ColorScheme.fromSeed(
seedColor: AppColors.primary,
brightness: Brightness.light, // 或 Brightness.dark
),
```
### 支持 Dark Mode
```dart
class AppTheme {
static ThemeData get light => ThemeData(
brightness: Brightness.light,
colorScheme: ColorScheme.fromSeed(
seedColor: AppColors.primary,
brightness: Brightness.light,
),
);
static ThemeData get dark => ThemeData(
brightness: Brightness.dark,
colorScheme: ColorScheme.fromSeed(
seedColor: AppColors.primary,
brightness: Brightness.dark,
),
);
}
```
## 相关文件
- `apps/lib/core/theme/app_theme.dart`
- `apps/lib/core/theme/design_tokens.dart`
## 修复优先级
**低** - 当前只有 light 模式,不影响功能