docs(theme): update documentation and clean up deprecated color scheme definitions

Removed outdated compatibility aliases and deprecated methods from AppColorScheme,
and updated CLAUDE.md to reflect new theme system requirements with centralized
color management and no hard-coded values in UI components.
This commit is contained in:
2026-04-05 23:37:27 +08:00
parent 189609f337
commit f5ac578892
39 changed files with 20289 additions and 1260 deletions

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../../../../core/theme/app_color_scheme.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
/// 金额输入框组件(含超额提示)
///
@@ -70,17 +70,13 @@ class _AmountInputState extends State<AmountInput> {
controller: widget.amountController,
keyboardType: const TextInputType.numberWithOptions(decimal: true),
onChanged: (_) => _checkLimit(),
style: GoogleFonts.inter(
fontSize: 14,
fontWeight: FontWeight.normal,
color: colorScheme.onSurface,
fontFeatures: [FontFeature.tabularFigures()],
style: AppTextStyles.numberMedium(context).copyWith(
fontWeight: FontWeight.w400,
),
decoration: InputDecoration(
hintText: '请输入金额',
hintStyle: GoogleFonts.inter(
fontSize: 14,
fontWeight: FontWeight.normal,
hintStyle: AppTextStyles.numberMedium(context).copyWith(
fontWeight: FontWeight.w400,
color: colorScheme.onSurfaceVariant.withOpacity(0.5),
),
border: InputBorder.none,
@@ -96,11 +92,10 @@ class _AmountInputState extends State<AmountInput> {
child: Row(
children: [
Icon(Icons.error_outline, size: 13, color: warningColor),
SizedBox(width: 4),
SizedBox(width: AppSpacing.xs),
Text(
'超出可用USDT余额',
style: GoogleFonts.inter(
fontSize: 11,
style: AppTextStyles.bodySmall(context).copyWith(
color: warningColor,
),
),

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
/// 币种头像组件
///
@@ -21,10 +22,9 @@ class CoinAvatar extends StatelessWidget {
),
child: Center(
child: Text(icon ?? '?',
style: TextStyle(
style: AppTextStyles.displaySmall(context).copyWith(
fontSize: 20,
color: colorScheme.primary,
fontWeight: FontWeight.bold,
)),
),
);

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:lucide_icons_flutter/lucide_icons.dart';
import '../../../../core/theme/app_color_scheme.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
import '../../../../data/models/coin.dart';
import 'coin_avatar.dart';
@@ -54,18 +54,12 @@ class CoinSelector extends StatelessWidget {
selectedCoin != null
? '${selectedCoin!.code}/USDT'
: '选择币种',
style: GoogleFonts.inter(
fontSize: 18,
fontWeight: FontWeight.w700,
color: colorScheme.onSurface,
),
style: AppTextStyles.headlineLarge(context),
),
const SizedBox(height: 2),
Text(
selectedCoin?.name ?? '点击选择交易对',
style: GoogleFonts.inter(
fontSize: 12,
fontWeight: FontWeight.normal,
style: AppTextStyles.bodyMedium(context).copyWith(
color: colorScheme.onSurfaceVariant,
),
),
@@ -86,7 +80,7 @@ class CoinSelector extends StatelessWidget {
showModalBottomSheet(
context: context,
backgroundColor: Colors.transparent,
backgroundColor: const Color(0x00000000),
isScrollControlled: true,
builder: (ctx) => Container(
height: MediaQuery.of(ctx).size.height * 0.65,
@@ -106,7 +100,7 @@ class CoinSelector extends StatelessWidget {
height: 4,
decoration: BoxDecoration(
color: colorScheme.onSurfaceVariant.withOpacity(0.3),
borderRadius: BorderRadius.circular(2),
borderRadius: BorderRadius.circular(AppRadius.sm),
),
),
// 标题栏
@@ -116,11 +110,7 @@ class CoinSelector extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('选择币种',
style: GoogleFonts.inter(
fontSize: 16,
fontWeight: FontWeight.bold,
color: colorScheme.onSurface,
)),
style: AppTextStyles.headlineLarge(context)),
GestureDetector(
onTap: () => Navigator.of(ctx).pop(),
child: Icon(LucideIcons.x,
@@ -163,7 +153,7 @@ class CoinSelector extends StatelessWidget {
padding: EdgeInsets.symmetric(
horizontal: AppSpacing.lg, vertical: AppSpacing.md),
color:
isSelected ? colorScheme.primary.withOpacity(0.1) : Colors.transparent,
isSelected ? colorScheme.primary.withOpacity(0.1) : const Color(0x00000000),
child: Row(
children: [
CoinAvatar(icon: coin.displayIcon),
@@ -176,24 +166,15 @@ class CoinSelector extends StatelessWidget {
Row(
children: [
Text(coin.code,
style: GoogleFonts.inter(
fontSize: 15,
fontWeight: FontWeight.bold,
color: colorScheme.onSurface,
)),
style: AppTextStyles.headlineLarge(context)),
SizedBox(width: AppSpacing.xs),
Text('/USDT',
style: GoogleFonts.inter(
fontSize: 11,
style: AppTextStyles.bodySmall(context).copyWith(
color: colorScheme.onSurfaceVariant,
)),
const Spacer(),
Text('\$${coin.formattedPrice}',
style: GoogleFonts.inter(
fontSize: 13,
fontWeight: FontWeight.w600,
color: colorScheme.onSurface,
)),
style: AppTextStyles.numberMedium(context)),
SizedBox(width: AppSpacing.sm),
// 涨跌幅徽章
Container(
@@ -203,8 +184,7 @@ class CoinSelector extends StatelessWidget {
borderRadius: BorderRadius.circular(AppRadius.sm),
),
child: Text(coin.formattedChange,
style: GoogleFonts.inter(
fontSize: 11,
style: AppTextStyles.labelMedium(context).copyWith(
color: changeColor,
fontWeight: FontWeight.w600,
)),
@@ -219,8 +199,7 @@ class CoinSelector extends StatelessWidget {
SizedBox(height: 3),
// 第二行:币种名称
Text(coin.name,
style: GoogleFonts.inter(
fontSize: 12,
style: AppTextStyles.bodyMedium(context).copyWith(
color: colorScheme.onSurfaceVariant,
)),
],

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../../../../core/theme/app_color_scheme.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
import '../../../components/glass_panel.dart';
import '../../../components/neon_glow.dart';
@@ -34,7 +34,7 @@ class ConfirmDialog extends StatelessWidget {
: AppColorScheme.getDownColor(isDark);
return Dialog(
backgroundColor: Colors.transparent,
backgroundColor: const Color(0x00000000),
child: GlassPanel(
borderRadius: BorderRadius.circular(AppRadius.lg),
padding: EdgeInsets.all(AppSpacing.lg),
@@ -45,11 +45,7 @@ class ConfirmDialog extends StatelessWidget {
Center(
child: Text(
'确认${isBuy ? '买入' : '卖出'}',
style: GoogleFonts.inter(
fontSize: 16,
fontWeight: FontWeight.bold,
color: colorScheme.onSurface,
),
style: AppTextStyles.headlineLarge(context),
),
),
SizedBox(height: AppSpacing.lg),
@@ -97,15 +93,12 @@ class ConfirmDialog extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(label,
style: GoogleFonts.inter(
fontSize: 14,
fontWeight: FontWeight.normal,
style: AppTextStyles.headlineMedium(context).copyWith(
fontWeight: FontWeight.w400,
color: colorScheme.onSurfaceVariant,
)),
Text(value,
style: GoogleFonts.inter(
fontSize: 14,
fontWeight: FontWeight.w600,
style: AppTextStyles.numberMedium(context).copyWith(
color: valueColor ?? colorScheme.onSurface,
)),
],

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
/// 占位卡片组件
///
@@ -31,9 +31,8 @@ class PlaceholderCard extends StatelessWidget {
),
child: Center(
child: Text(message,
style: GoogleFonts.inter(
style: AppTextStyles.headlineMedium(context).copyWith(
color: colorScheme.onSurfaceVariant,
fontSize: 14,
)),
),
);

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../../../../core/theme/app_color_scheme.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
import '../../../../data/models/coin.dart';
/// 价格卡片组件
@@ -25,7 +25,7 @@ class PriceCard extends StatelessWidget {
return Container(
width: double.infinity,
padding: const EdgeInsets.all(20),
padding: const EdgeInsets.all(AppSpacing.md + AppSpacing.sm),
decoration: BoxDecoration(
color: isDark
? colorScheme.surfaceContainer
@@ -43,12 +43,7 @@ class PriceCard extends StatelessWidget {
children: [
Text(
coin.formattedPrice,
style: GoogleFonts.inter(
fontSize: 32,
fontWeight: FontWeight.w700,
color: colorScheme.onSurface,
fontFeatures: [FontFeature.tabularFigures()],
),
style: AppTextStyles.numberLarge(context).copyWith(fontSize: 32),
),
const SizedBox(width: AppSpacing.sm),
// 涨跌幅徽章 - 圆角sm涨绿背景
@@ -61,11 +56,9 @@ class PriceCard extends StatelessWidget {
),
child: Text(
coin.formattedChange,
style: GoogleFonts.inter(
fontSize: 12,
fontWeight: FontWeight.w600,
style: AppTextStyles.numberSmall(context).copyWith(
color: changeColor,
fontFeatures: [FontFeature.tabularFigures()],
fontWeight: FontWeight.w600,
),
),
),
@@ -75,11 +68,7 @@ class PriceCard extends StatelessWidget {
// 副标题
Text(
'24h 变化',
style: GoogleFonts.inter(
fontSize: 11,
fontWeight: FontWeight.normal,
color: colorScheme.onSurfaceVariant,
),
style: AppTextStyles.bodySmall(context),
),
],
),

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../../../../core/theme/app_color_scheme.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
/// 交易按钮组件
///
@@ -44,16 +44,14 @@ class TradeButton extends StatelessWidget {
height: 20,
child: CircularProgressIndicator(
strokeWidth: 2,
color: Colors.white,
color: AppColorScheme.darkOnPrimary,
),
)
: Text(
'${isBuy ? '买入' : '卖出'} ${coinCode ?? ""}',
style: GoogleFonts.inter(
fontSize: 16,
fontWeight: FontWeight.w700,
style: AppTextStyles.headlineLarge(context).copyWith(
color: enabled
? Colors.white
? AppColorScheme.darkOnPrimary
: colorScheme.onSurface.withOpacity(0.3),
),
),

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import '../../../../core/theme/app_color_scheme.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
import '../../../../data/models/coin.dart';
import 'amount_input.dart';
@@ -51,7 +51,7 @@ class TradeFormCard extends StatelessWidget {
return Container(
width: double.infinity,
padding: const EdgeInsets.all(20),
padding: const EdgeInsets.all(AppSpacing.md + AppSpacing.sm),
decoration: BoxDecoration(
color: cardBgColor,
borderRadius: BorderRadius.circular(AppRadius.lg),
@@ -88,11 +88,9 @@ class TradeFormCard extends StatelessWidget {
child: Center(
child: Text(
'买入',
style: GoogleFonts.inter(
fontSize: 14,
fontWeight: FontWeight.w600,
style: AppTextStyles.headlineMedium(context).copyWith(
color: isBuy
? Colors.white
? AppColorScheme.darkOnPrimary
: colorScheme.onSurfaceVariant,
),
),
@@ -120,11 +118,9 @@ class TradeFormCard extends StatelessWidget {
child: Center(
child: Text(
'卖出',
style: GoogleFonts.inter(
fontSize: 14,
fontWeight: FontWeight.w600,
style: AppTextStyles.headlineMedium(context).copyWith(
color: !isBuy
? Colors.white
? AppColorScheme.darkOnPrimary
: colorScheme.onSurfaceVariant,
),
),
@@ -142,17 +138,11 @@ class TradeFormCard extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('交易金额',
style: GoogleFonts.inter(
fontSize: 12,
fontWeight: FontWeight.normal,
style: AppTextStyles.bodyMedium(context).copyWith(
color: colorScheme.onSurfaceVariant,
)),
Text('USDT',
style: GoogleFonts.inter(
fontSize: 12,
fontWeight: FontWeight.w600,
color: colorScheme.onSurface,
)),
style: AppTextStyles.labelLarge(context)),
],
),
const SizedBox(height: AppSpacing.sm),
@@ -172,9 +162,7 @@ class TradeFormCard extends StatelessWidget {
isBuy
? '可用: $availableUsdt USDT'
: '可用: $availableCoinQty ${selectedCoin?.code ?? ""}',
style: GoogleFonts.inter(
fontSize: 11,
fontWeight: FontWeight.normal,
style: AppTextStyles.bodySmall(context).copyWith(
color: colorScheme.onSurfaceVariant,
),
),
@@ -200,19 +188,12 @@ class TradeFormCard extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('交易数量',
style: GoogleFonts.inter(
fontSize: 12,
fontWeight: FontWeight.normal,
style: AppTextStyles.bodyMedium(context).copyWith(
color: colorScheme.onSurfaceVariant,
)),
Text(
'$calculatedQuantity ${selectedCoin?.code ?? ''}',
style: GoogleFonts.inter(
fontSize: 14,
fontWeight: FontWeight.w600,
color: colorScheme.onSurface,
fontFeatures: [FontFeature.tabularFigures()],
),
style: AppTextStyles.numberMedium(context),
),
],
),
@@ -234,9 +215,7 @@ class TradeFormCard extends StatelessWidget {
),
child: Center(
child: Text(label,
style: GoogleFonts.inter(
fontSize: 12,
fontWeight: FontWeight.w500,
style: AppTextStyles.labelLarge(context).copyWith(
color: colorScheme.onSurfaceVariant,
)),
),