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,101 @@
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
/// 本地存储服务
class LocalStorage {
LocalStorage._();
static const String _tokenKey = 'token';
static const String _userInfoKey = 'userInfo';
static SharedPreferences? _prefs;
/// 初始化
static Future<void> init() async {
_prefs = await SharedPreferences.getInstance();
}
/// 获取实例
static SharedPreferences get prefs {
if (_prefs == null) {
throw Exception('LocalStorage not initialized. Call init() first.');
}
return _prefs!;
}
// ==================== Token 管理 ====================
/// 保存 Token
static Future<void> saveToken(String token) async {
await prefs.setString(_tokenKey, token);
}
/// 获取 Token
static String? getToken() {
return prefs.getString(_tokenKey);
}
/// 移除 Token
static Future<void> removeToken() async {
await prefs.remove(_tokenKey);
}
/// 是否已登录
static bool get isLoggedIn => getToken() != null && getToken()!.isNotEmpty;
// ==================== 用户信息管理 ====================
/// 保存用户信息
static Future<void> saveUserInfo(Map<String, dynamic> userInfo) async {
await prefs.setString(_userInfoKey, jsonEncode(userInfo));
}
/// 获取用户信息
static Map<String, dynamic>? getUserInfo() {
final str = prefs.getString(_userInfoKey);
if (str == null) return null;
try {
return jsonDecode(str) as Map<String, dynamic>;
} catch (e) {
return null;
}
}
/// 移除用户信息
static Future<void> removeUserInfo() async {
await prefs.remove(_userInfoKey);
}
// ==================== 通用方法 ====================
/// 保存字符串
static Future<void> setString(String key, String value) async {
await prefs.setString(key, value);
}
/// 获取字符串
static String? getString(String key) {
return prefs.getString(key);
}
/// 保存布尔值
static Future<void> setBool(String key, bool value) async {
await prefs.setBool(key, value);
}
/// 获取布尔值
static bool? getBool(String key) {
return prefs.getBool(key);
}
/// 清除所有数据
static Future<void> clearAll() async {
await prefs.clear();
}
/// 清除用户数据(退出登录时调用)
static Future<void> clearUserData() async {
await removeToken();
await removeUserInfo();
}
}