refactor(theme): 迁移主题感知颜色至 ThemeExtension
- 创建 AppThemeColors ThemeExtension 类,统一管理主题感知颜色(涨跌色、卡片背景、渐变等) - 从 AppColorScheme 移除主题感知辅助函数,仅保留静态颜色常量 - 在 AppTheme 中注册 ThemeExtension,支持深色/浅色主题工厂 - 重构所有 UI 组件使用 context.appColors 访问主题颜色,替代硬编码的 AppColorScheme 方法调用 - 移除组件中重复的 isDark 判断逻辑,简化颜色获取方式 - 保持向后兼容性,所有现有功能不变
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shadcn_ui/shadcn_ui.dart';
|
||||
import 'package:flutter_animate/flutter_animate.dart';
|
||||
import '../../core/theme/app_color_scheme.dart';
|
||||
import '../../core/theme/app_spacing.dart';
|
||||
import '../../core/theme/app_theme_extension.dart';
|
||||
|
||||
/// 资产卡片组件 - 用于显示资产总览
|
||||
///
|
||||
@@ -21,24 +21,6 @@ class AssetCard extends StatelessWidget {
|
||||
final Gradient? gradient;
|
||||
final VoidCallback? onTap;
|
||||
|
||||
/// 默认渐变色 - Neon Blue → Electric Purple
|
||||
static LinearGradient defaultGradientBuilder(bool isDark) => LinearGradient(
|
||||
colors: isDark
|
||||
? [AppColorScheme.darkPrimary, AppColorScheme.darkSecondary]
|
||||
: [AppColorScheme.lightPrimary, AppColorScheme.lightSecondary],
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
);
|
||||
|
||||
/// 翡翠渐变 - 用于盈利展示(主题感知)
|
||||
static LinearGradient getEmeraldGradient(bool isDark) => LinearGradient(
|
||||
colors: isDark
|
||||
? [AppColorScheme.darkTertiary, const Color(0xFF7de8b8)]
|
||||
: [AppColorScheme.lightTertiary, const Color(0xFF00c987)],
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
);
|
||||
|
||||
const AssetCard({
|
||||
super.key,
|
||||
this.title = '总资产',
|
||||
@@ -54,9 +36,9 @@ class AssetCard extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = ShadTheme.of(context);
|
||||
final colorScheme = Theme.of(context).colorScheme;
|
||||
final isDark = Theme.of(context).brightness == Brightness.dark;
|
||||
final cardGradient = gradient ?? defaultGradientBuilder(isDark);
|
||||
final colorScheme = context.colors;
|
||||
final appColors = context.appColors;
|
||||
final cardGradient = gradient ?? appColors.assetGradient;
|
||||
|
||||
// 主题感知颜色 - 在渐变背景上使用 onPrimary
|
||||
final primaryTextColor = colorScheme.onPrimary;
|
||||
@@ -197,6 +179,7 @@ class AssetCardCompact extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = ShadTheme.of(context);
|
||||
final appColors = context.appColors;
|
||||
final isValueUp = isUp ?? true;
|
||||
|
||||
return ShadCard(
|
||||
@@ -227,13 +210,13 @@ class AssetCardCompact extends StatelessWidget {
|
||||
Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColorScheme.getChangeBackgroundColor(isValueUp),
|
||||
color: isValueUp ? appColors.upBackground : appColors.downBackground,
|
||||
borderRadius: BorderRadius.circular(AppRadius.sm),
|
||||
),
|
||||
child: Text(
|
||||
change!,
|
||||
style: TextStyle(
|
||||
color: AppColorScheme.getChangeColor(isValueUp),
|
||||
color: isValueUp ? appColors.up : appColors.down,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user