refactor(theme): 优化主题配色方案并统一设计语言
- 更新 CLAUDE.md 中的技能系统执行逻辑,简化任务处理流程 - 重构 app_color_scheme.dart 中的颜色定义,将深色主题主色从专业蓝改为真金色,浅色主题主色从专业蓝改为深灰色 - 统一盈利颜色为绿色调色板,更新渐变和容器颜色以保持一致性 - 调整 app_theme_extension.dart 中的强调色引用,确保深色主题使用金色作为主强调色 - 优化颜色命名和注释,使设计意图更清晰
This commit is contained in:
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
## 技能系统
|
## 技能系统
|
||||||
|
|
||||||
当处理任务时,先扫描 `.agents/skills/` 目录下是否有相关技能。如果技能可能适用,先用 Read 工具读取对应的 `SKILL.md`,然后严格遵循其指引执行。技能优先级高于默认行为,但低于用户的显式指令。
|
执行任务前先判定复杂度:简单任务(改样式、调主题、修小bug、清理冗余)不读 brainstorming。复杂任务主动启用适用技能,扫描 .agents/skills/ 目录,Read 对应 SKILL.md 后严格遵循执行。技能优先级高于默认行为,但低于用户的显式指令。
|
||||||
|
|
||||||
## 构建与运行命令
|
## 构建与运行命令
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:shadcn_ui/shadcn_ui.dart';
|
import 'package:shadcn_ui/shadcn_ui.dart';
|
||||||
|
|
||||||
/// Material Design 3 颜色系统 - "黑金传奇" & "白金殿堂"
|
/// Material Design 3 颜色系统 - Pencil Design Theme
|
||||||
///
|
///
|
||||||
/// 深色主题: "黑金传奇" (Black & Gold)
|
/// 深色主题: "黑金传奇" (Black & Gold)
|
||||||
/// 深邃黑底 + 专业蓝主色 + 真金强调 → 赛博朋克科技感 × 金融奢华感
|
/// 深邃黑底 + 真金主色 + 翠绿盈利 → 金融奢华感
|
||||||
/// 背景 #0A0E14 | 主色 #1E3A8A | 强调 #D4AF37
|
/// 背景 #0B1120 | 主色 #D4AF37 | 盈利 #4ADE80
|
||||||
///
|
///
|
||||||
/// 浅色主题: "白金殿堂" (White & Gold)
|
/// 浅色主题: "白金殿堂" (White & Gold)
|
||||||
/// 纯净白底 + 专业蓝主色 + 亮金强调 → 高端金融科技 × 尊贵品质感
|
/// 纯净白底 + 深灰主色 + 琥珀强调 → 高端金融科技
|
||||||
/// 背景 #FAFAFA | 主色 #1E40AF | 强调 #FFD700
|
/// 背景 #F8FAFC | 主色 #1F2937 | 强调 #F59E0B
|
||||||
///
|
///
|
||||||
/// 设计原则:
|
/// 设计原则:
|
||||||
/// - Material Design 3 配色方案
|
/// - Material Design 3 配色方案
|
||||||
@@ -48,16 +48,16 @@ class AppColorScheme {
|
|||||||
static const Color darkOutline = Color(0xFF64748B);
|
static const Color darkOutline = Color(0xFF64748B);
|
||||||
static const Color darkOutlineVariant = Color(0xFF334155);
|
static const Color darkOutlineVariant = Color(0xFF334155);
|
||||||
|
|
||||||
/// Primary - 专业蓝 #1E3A8A (主要交互)
|
/// Primary - 真金 #D4AF37 (accent-primary)
|
||||||
static const Color darkPrimary = Color(0xFF1E3A8A);
|
static const Color darkPrimary = Color(0xFFD4AF37);
|
||||||
static const Color darkPrimaryDim = Color(0xFF1E40AF);
|
static const Color darkPrimaryDim = Color(0xFFB8960E);
|
||||||
static const Color darkPrimaryContainer = Color(0xFF3B82F6);
|
static const Color darkPrimaryContainer = Color(0xFFE8C84A);
|
||||||
static const Color darkPrimaryFixed = Color(0xFF3B82F6);
|
static const Color darkPrimaryFixed = Color(0xFFE8C84A);
|
||||||
static const Color darkPrimaryFixedDim = Color(0xFF2563EB);
|
static const Color darkPrimaryFixedDim = Color(0xFFD4AF37);
|
||||||
static const Color darkOnPrimary = Color(0xFFFFFFFF);
|
static const Color darkOnPrimary = Color(0xFF1F2937);
|
||||||
static const Color darkOnPrimaryContainer = Color(0xFFBFDBFE);
|
static const Color darkOnPrimaryContainer = Color(0xFF1F2937);
|
||||||
static const Color darkOnPrimaryFixed = Color(0xFFFFFFFF);
|
static const Color darkOnPrimaryFixed = Color(0xFF1F2937);
|
||||||
static const Color darkOnPrimaryFixedVariant = Color(0xFFE0E7FF);
|
static const Color darkOnPrimaryFixedVariant = Color(0xFF374151);
|
||||||
|
|
||||||
/// Secondary - 真金 #D4AF37 (黑金强调色)
|
/// Secondary - 真金 #D4AF37 (黑金强调色)
|
||||||
static const Color darkSecondary = Color(0xFFD4AF37);
|
static const Color darkSecondary = Color(0xFFD4AF37);
|
||||||
@@ -70,16 +70,16 @@ class AppColorScheme {
|
|||||||
static const Color darkOnSecondaryFixed = Color(0xFF1F2937);
|
static const Color darkOnSecondaryFixed = Color(0xFF1F2937);
|
||||||
static const Color darkOnSecondaryFixedVariant = Color(0xFF374151);
|
static const Color darkOnSecondaryFixedVariant = Color(0xFF374151);
|
||||||
|
|
||||||
/// Tertiary - Neon Green (绿色 - 仅用于成功/盈利/买入)
|
/// Tertiary - Profit Green #4ADE80 (profit-green)
|
||||||
static const Color darkTertiary = Color(0xFFafffd1);
|
static const Color darkTertiary = Color(0xFF4ADE80);
|
||||||
static const Color darkTertiaryDim = Color(0xFF00efa0);
|
static const Color darkTertiaryDim = Color(0xFF22C55E);
|
||||||
static const Color darkTertiaryContainer = Color(0xFF00ffab);
|
static const Color darkTertiaryContainer = Color(0xFF86EFAC);
|
||||||
static const Color darkTertiaryFixed = Color(0xFF00ffab);
|
static const Color darkTertiaryFixed = Color(0xFF86EFAC);
|
||||||
static const Color darkTertiaryFixedDim = Color(0xFF00efa0);
|
static const Color darkTertiaryFixedDim = Color(0xFF4ADE80);
|
||||||
static const Color darkOnTertiary = Color(0xFF006642);
|
static const Color darkOnTertiary = Color(0xFF052E16);
|
||||||
static const Color darkOnTertiaryContainer = Color(0xFF005c3b);
|
static const Color darkOnTertiaryContainer = Color(0xFF052E16);
|
||||||
static const Color darkOnTertiaryFixed = Color(0xFF00472d);
|
static const Color darkOnTertiaryFixed = Color(0xFF052E16);
|
||||||
static const Color darkOnTertiaryFixedVariant = Color(0xFF006742);
|
static const Color darkOnTertiaryFixedVariant = Color(0xFF14532D);
|
||||||
|
|
||||||
/// Error - Neon Red (红色 - 错误/卖出)
|
/// Error - Neon Red (红色 - 错误/卖出)
|
||||||
static const Color darkError = Color(0xFFff716c);
|
static const Color darkError = Color(0xFFff716c);
|
||||||
@@ -113,20 +113,20 @@ class AppColorScheme {
|
|||||||
static const Color lightSurfaceHigh = Color(0xFFE2E8F0);
|
static const Color lightSurfaceHigh = Color(0xFFE2E8F0);
|
||||||
static const Color lightSurfaceHighest = Color(0xFFCBD5E1);
|
static const Color lightSurfaceHighest = Color(0xFFCBD5E1);
|
||||||
|
|
||||||
/// Ghost Border - Slate 300
|
/// Ghost Border - Pencil border-default
|
||||||
static const Color lightOutlineVariant = Color(0xFFCBD5E1);
|
static const Color lightOutlineVariant = Color(0xFFE2E8F0);
|
||||||
|
|
||||||
/// Primary - 专业蓝 #1E40AF (主要交互)
|
/// Primary - Dark Slate #1F2937 (accent-primary)
|
||||||
static const Color lightPrimary = Color(0xFF1E40AF);
|
static const Color lightPrimary = Color(0xFF1F2937);
|
||||||
static const Color lightPrimaryContainer = Color(0xFF3B82F6);
|
static const Color lightPrimaryContainer = Color(0xFFF3F4F6);
|
||||||
|
|
||||||
/// Secondary - 亮金 #D4AF37 (白金强调色)
|
/// Secondary - Amber #F59E0B (gold-accent)
|
||||||
static const Color lightSecondary = Color(0xFFD4AF37);
|
static const Color lightSecondary = Color(0xFFF59E0B);
|
||||||
static const Color lightSecondaryContainer = Color(0xFFFFE44D);
|
static const Color lightSecondaryContainer = Color(0xFFFDE68A);
|
||||||
|
|
||||||
/// Tertiary - Success (买入/盈利)
|
/// Tertiary - Profit Green #16A34A (profit-green)
|
||||||
static const Color lightTertiary = Color(0xFF00875A);
|
static const Color lightTertiary = Color(0xFF16A34A);
|
||||||
static const Color lightTertiaryContainer = Color(0xFFd4f5e9);
|
static const Color lightTertiaryContainer = Color(0xFFDCFCE7);
|
||||||
|
|
||||||
/// 文本色 - Slate
|
/// 文本色 - Slate
|
||||||
static const Color lightOnSurface = Color(0xFF0F172A);
|
static const Color lightOnSurface = Color(0xFF0F172A);
|
||||||
@@ -221,9 +221,9 @@ class AppColorScheme {
|
|||||||
end: Alignment(0.7, 0.7),
|
end: Alignment(0.7, 0.7),
|
||||||
);
|
);
|
||||||
|
|
||||||
/// 资产卡片渐变 - 蓝→金
|
/// 资产卡片渐变 - 金色层次
|
||||||
static const LinearGradient assetCardGradient = LinearGradient(
|
static const LinearGradient assetCardGradient = LinearGradient(
|
||||||
colors: [darkPrimary, darkSecondary],
|
colors: [darkPrimaryContainer, darkPrimary],
|
||||||
begin: Alignment.topLeft,
|
begin: Alignment.topLeft,
|
||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
);
|
);
|
||||||
@@ -242,17 +242,17 @@ class AppColorScheme {
|
|||||||
primary: darkPrimary,
|
primary: darkPrimary,
|
||||||
primaryForeground: darkOnPrimary,
|
primaryForeground: darkOnPrimary,
|
||||||
secondary: darkSecondary,
|
secondary: darkSecondary,
|
||||||
secondaryForeground: darkOnSurface,
|
secondaryForeground: darkOnSecondary,
|
||||||
muted: darkSurfaceContainerHigh,
|
muted: darkSurfaceContainerHigh,
|
||||||
mutedForeground: darkOnSurfaceVariant,
|
mutedForeground: darkOnSurfaceVariant,
|
||||||
accent: darkSecondary.withValues(alpha: 0.15),
|
accent: darkPrimary.withValues(alpha: 0.15),
|
||||||
accentForeground: darkSecondary,
|
accentForeground: darkPrimary,
|
||||||
destructive: error,
|
destructive: error,
|
||||||
destructiveForeground: darkOnSurface,
|
destructiveForeground: darkOnSurface,
|
||||||
border: darkOutlineVariant.withValues(alpha: 0.15),
|
border: darkOutlineVariant.withValues(alpha: 0.15),
|
||||||
input: darkOutlineVariant.withValues(alpha: 0.15),
|
input: darkOutlineVariant.withValues(alpha: 0.15),
|
||||||
ring: darkSecondary,
|
ring: darkPrimary,
|
||||||
selection: darkSecondary.withValues(alpha: 0.3),
|
selection: darkPrimary.withValues(alpha: 0.3),
|
||||||
);
|
);
|
||||||
|
|
||||||
// ============================================
|
// ============================================
|
||||||
@@ -269,7 +269,7 @@ class AppColorScheme {
|
|||||||
primary: lightPrimary,
|
primary: lightPrimary,
|
||||||
primaryForeground: const Color(0xFFFFFFFF),
|
primaryForeground: const Color(0xFFFFFFFF),
|
||||||
secondary: lightSecondary,
|
secondary: lightSecondary,
|
||||||
secondaryForeground: lightOnSurface,
|
secondaryForeground: const Color(0xFFFFFFFF),
|
||||||
muted: lightSurfaceHigh,
|
muted: lightSurfaceHigh,
|
||||||
mutedForeground: lightOnSurfaceVariant,
|
mutedForeground: lightOnSurfaceVariant,
|
||||||
accent: lightSecondary.withValues(alpha: 0.1),
|
accent: lightSecondary.withValues(alpha: 0.1),
|
||||||
@@ -344,15 +344,15 @@ class AppColorScheme {
|
|||||||
primary: lightPrimary,
|
primary: lightPrimary,
|
||||||
onPrimary: const Color(0xFFFFFFFF),
|
onPrimary: const Color(0xFFFFFFFF),
|
||||||
primaryContainer: lightPrimaryContainer,
|
primaryContainer: lightPrimaryContainer,
|
||||||
onPrimaryContainer: lightOnSurface,
|
onPrimaryContainer: lightPrimary,
|
||||||
secondary: lightSecondary,
|
secondary: lightSecondary,
|
||||||
onSecondary: const Color(0xFFFFFFFF),
|
onSecondary: const Color(0xFFFFFFFF),
|
||||||
secondaryContainer: lightSecondaryContainer,
|
secondaryContainer: lightSecondaryContainer,
|
||||||
onSecondaryContainer: lightOnSurface,
|
onSecondaryContainer: const Color(0xFF78350F),
|
||||||
tertiary: lightTertiary,
|
tertiary: lightTertiary,
|
||||||
onTertiary: const Color(0xFFFFFFFF),
|
onTertiary: const Color(0xFFFFFFFF),
|
||||||
tertiaryContainer: lightTertiaryContainer,
|
tertiaryContainer: lightTertiaryContainer,
|
||||||
onTertiaryContainer: lightOnSurface,
|
onTertiaryContainer: const Color(0xFF052E16),
|
||||||
error: lightError,
|
error: lightError,
|
||||||
onError: lightOnError,
|
onError: lightOnError,
|
||||||
errorContainer: const Color(0xFFffeaea),
|
errorContainer: const Color(0xFFffeaea),
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class AppThemeColors extends ThemeExtension<AppThemeColors> {
|
|||||||
final Color downBackground;
|
final Color downBackground;
|
||||||
|
|
||||||
// ---- 强调色 ----
|
// ---- 强调色 ----
|
||||||
/// 主强调色(dark: secondary 金色, light: primary 蓝色)
|
/// 主强调色(dark: primary 金色, light: primary 深灰)
|
||||||
final Color accentPrimary;
|
final Color accentPrimary;
|
||||||
|
|
||||||
// ---- 光效 ----
|
// ---- 光效 ----
|
||||||
@@ -76,7 +76,7 @@ class AppThemeColors extends ThemeExtension<AppThemeColors> {
|
|||||||
upBackground: AppColorScheme.darkTertiary.withValues(alpha: 0.15),
|
upBackground: AppColorScheme.darkTertiary.withValues(alpha: 0.15),
|
||||||
down: AppColorScheme.darkError,
|
down: AppColorScheme.darkError,
|
||||||
downBackground: AppColorScheme.darkError.withValues(alpha: 0.15),
|
downBackground: AppColorScheme.darkError.withValues(alpha: 0.15),
|
||||||
accentPrimary: AppColorScheme.darkSecondary,
|
accentPrimary: AppColorScheme.darkPrimary,
|
||||||
glowOpacity: 0.15,
|
glowOpacity: 0.15,
|
||||||
ghostBorder: AppColorScheme.darkOutlineVariant.withValues(alpha: 0.15),
|
ghostBorder: AppColorScheme.darkOutlineVariant.withValues(alpha: 0.15),
|
||||||
ctaGradient: AppColorScheme.darkCtaGradient,
|
ctaGradient: AppColorScheme.darkCtaGradient,
|
||||||
@@ -84,7 +84,7 @@ class AppThemeColors extends ThemeExtension<AppThemeColors> {
|
|||||||
sellGradient: AppColorScheme.sellGradient,
|
sellGradient: AppColorScheme.sellGradient,
|
||||||
assetGradient: AppColorScheme.assetCardGradient,
|
assetGradient: AppColorScheme.assetCardGradient,
|
||||||
emeraldGradient: const LinearGradient(
|
emeraldGradient: const LinearGradient(
|
||||||
colors: [AppColorScheme.darkTertiary, Color(0xFF7de8b8)],
|
colors: [AppColorScheme.darkTertiary, AppColorScheme.darkTertiaryContainer],
|
||||||
begin: Alignment.topLeft,
|
begin: Alignment.topLeft,
|
||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
),
|
),
|
||||||
@@ -115,7 +115,7 @@ class AppThemeColors extends ThemeExtension<AppThemeColors> {
|
|||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
),
|
),
|
||||||
emeraldGradient: const LinearGradient(
|
emeraldGradient: const LinearGradient(
|
||||||
colors: [AppColorScheme.lightTertiary, Color(0xFF00c987)],
|
colors: [AppColorScheme.lightTertiary, AppColorScheme.lightTertiaryContainer],
|
||||||
begin: Alignment.topLeft,
|
begin: Alignment.topLeft,
|
||||||
end: Alignment.bottomRight,
|
end: Alignment.bottomRight,
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user