refactor(theme): 迁移主题感知颜色至 ThemeExtension

- 创建 AppThemeColors ThemeExtension 类,统一管理主题感知颜色(涨跌色、卡片背景、渐变等)
- 从 AppColorScheme 移除主题感知辅助函数,仅保留静态颜色常量
- 在 AppTheme 中注册 ThemeExtension,支持深色/浅色主题工厂
- 重构所有 UI 组件使用 context.appColors 访问主题颜色,替代硬编码的 AppColorScheme 方法调用
- 移除组件中重复的 isDark 判断逻辑,简化颜色获取方式
- 保持向后兼容性,所有现有功能不变
This commit is contained in:
2026-04-06 01:58:08 +08:00
parent 396668aa43
commit 7ed2435a4c
36 changed files with 658 additions and 810 deletions

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import '../../core/theme/app_color_scheme.dart';
import '../../core/theme/app_spacing.dart';
import '../../core/theme/app_theme_extension.dart';
/// 渐变按钮组件 - 支持 CTA 渐变效果
///
@@ -36,7 +36,6 @@ class GradientButton extends StatelessWidget {
bool isLoading = false,
bool isFullWidth = true,
IconData? icon,
bool isDark = true,
}) {
return GradientButton(
key: key,
@@ -45,7 +44,6 @@ class GradientButton extends StatelessWidget {
isLoading: isLoading,
isFullWidth: isFullWidth,
icon: icon,
gradient: isDark ? AppColorScheme.darkCtaGradient : AppColorScheme.lightCtaGradient,
);
}
@@ -57,6 +55,7 @@ class GradientButton extends StatelessWidget {
bool isLoading = false,
bool isFullWidth = true,
IconData? icon,
LinearGradient? gradient,
}) {
return GradientButton(
key: key,
@@ -65,7 +64,6 @@ class GradientButton extends StatelessWidget {
isLoading: isLoading,
isFullWidth: isFullWidth,
icon: icon ?? Icons.arrow_downward_rounded,
gradient: AppColorScheme.buyGradient,
);
}
@@ -77,6 +75,7 @@ class GradientButton extends StatelessWidget {
bool isLoading = false,
bool isFullWidth = true,
IconData? icon,
LinearGradient? gradient,
}) {
return GradientButton(
key: key,
@@ -85,16 +84,14 @@ class GradientButton extends StatelessWidget {
isLoading: isLoading,
isFullWidth: isFullWidth,
icon: icon ?? Icons.arrow_upward_rounded,
gradient: AppColorScheme.sellGradient,
);
}
@override
Widget build(BuildContext context) {
final isDark = Theme.of(context).brightness == Brightness.dark;
final colorScheme = Theme.of(context).colorScheme;
final buttonGradient = gradient ??
(isDark ? AppColorScheme.darkCtaGradient : AppColorScheme.lightCtaGradient);
final appColors = context.appColors;
final colorScheme = context.colors;
final buttonGradient = gradient ?? appColors.ctaGradient;
// 主题感知颜色 - 在渐变背景上使用 onPrimary
final textColor = colorScheme.onPrimary;
@@ -172,11 +169,8 @@ class GhostButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
final isDark = Theme.of(context).brightness == Brightness.dark;
final textColor = isDark ? AppColorScheme.darkPrimary : AppColorScheme.lightPrimary;
final borderColor = isDark
? AppColorScheme.darkOutlineVariant.withValues(alpha: 0.15)
: AppColorScheme.lightOutlineVariant.withValues(alpha: 0.3);
final textColor = context.colors.primary;
final borderColor = context.appColors.ghostBorder;
return Container(
width: isFullWidth ? double.infinity : null,