refactor: 将前端从 uni-app x 重构为 Flutter

变更内容:
- 删除 uni-app x 项目 (app/ 目录)
- 新增 Flutter 项目 (flutter_monisuo/ 目录)
- 新增部署脚本 (deploy/ 目录)

Flutter 项目功能:
- 用户登录/注册
- 首页资产概览
- 行情币种列表
- 交易买卖操作
- 资产账户管理
- 充值/提现/划转
- 深色主题
- JWT Token 认证

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
sion
2026-03-22 00:21:21 +08:00
parent 7694a34ade
commit ffac6fc267
67 changed files with 4396 additions and 3097 deletions

View File

@@ -0,0 +1,149 @@
import 'package:flutter/material.dart';
import '../constants/app_colors.dart';
/// 应用主题配置
class AppTheme {
AppTheme._();
/// 深色主题
static ThemeData get darkTheme {
return ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
scaffoldBackgroundColor: AppColors.background,
primaryColor: AppColors.primary,
colorScheme: const ColorScheme.dark(
primary: AppColors.primary,
secondary: AppColors.primaryLight,
error: AppColors.error,
surface: AppColors.cardBackground,
),
appBarTheme: const AppBarTheme(
backgroundColor: AppColors.background,
foregroundColor: AppColors.textPrimary,
elevation: 0,
centerTitle: true,
titleTextStyle: TextStyle(
fontSize: 18,
fontWeight: FontWeight.w600,
color: AppColors.textPrimary,
),
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: AppColors.cardBackground,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.border),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.border),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.primary),
),
hintStyle: const TextStyle(color: AppColors.textHint),
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14),
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: AppColors.primary,
foregroundColor: Colors.white,
minimumSize: const Size(double.infinity, 48),
padding: const EdgeInsets.symmetric(vertical: 14),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
textStyle: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
),
),
),
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(
foregroundColor: AppColors.primary,
),
),
dividerTheme: const DividerThemeData(
color: AppColors.border,
thickness: 1,
),
cardTheme: CardTheme(
color: AppColors.cardBackground,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
),
),
);
}
}
/// 文本样式
class AppTextStyles {
AppTextStyles._();
static const TextStyle heading1 = TextStyle(
fontSize: 28,
fontWeight: FontWeight.bold,
color: AppColors.textPrimary,
);
static const TextStyle heading2 = TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: AppColors.textPrimary,
);
static const TextStyle heading3 = TextStyle(
fontSize: 18,
fontWeight: FontWeight.w600,
color: AppColors.textPrimary,
);
static const TextStyle body1 = TextStyle(
fontSize: 16,
color: AppColors.textPrimary,
);
static const TextStyle body2 = TextStyle(
fontSize: 14,
color: AppColors.textPrimary,
);
static const TextStyle caption = TextStyle(
fontSize: 12,
color: AppColors.textSecondary,
);
static const TextStyle hint = TextStyle(
fontSize: 14,
color: AppColors.textHint,
);
}
/// 间距常量
class AppSpacing {
AppSpacing._();
static const double xs = 4.0;
static const double sm = 8.0;
static const double md = 16.0;
static const double lg = 24.0;
static const double xl = 32.0;
static const double xxl = 48.0;
}
/// 圆角常量
class AppRadius {
AppRadius._();
static const double sm = 8.0;
static const double md = 12.0;
static const double lg = 16.0;
static const double xl = 24.0;
static const double full = 999.0;
}