refactor(theme): 迁移主题感知颜色至 ThemeExtension
- 创建 AppThemeColors ThemeExtension 类,统一管理主题感知颜色(涨跌色、卡片背景、渐变等) - 从 AppColorScheme 移除主题感知辅助函数,仅保留静态颜色常量 - 在 AppTheme 中注册 ThemeExtension,支持深色/浅色主题工厂 - 重构所有 UI 组件使用 context.appColors 访问主题颜色,替代硬编码的 AppColorScheme 方法调用 - 移除组件中重复的 isDark 判断逻辑,简化颜色获取方式 - 保持向后兼容性,所有现有功能不变
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user