1. 新增 pnpm start:dev / pnpm start:stop 命令 - scripts/dev.mjs: 跨平台启动脚本(后端+管理端+学生端) - scripts/stop.mjs: 端口清理停止脚本 - 根 package.json 定义 pnpm 脚本 2. 修复 Flutter Web 编译(Isar 3.x + flutter_secure_storage 不兼容) - isar_database: 条件导出,Web 用空 stub - isar_journal_repository: 条件导出,Web 用空 stub - sync_engine: 条件导出,Web 用内存队列(无 Isar 持久化) - 移除 flutter_secure_storage(v9 web 插件用 dart:html) - 新增 SecureTokenStore 接口 + shared_preferences 实现 - auth_repository 改用 SecureTokenStore 接口
38 lines
1.1 KiB
Dart
38 lines
1.1 KiB
Dart
// 安全令牌存储 — 原生平台实现(shared_preferences)
|
||
//
|
||
// 临时使用 shared_preferences 替代 flutter_secure_storage。
|
||
// flutter_secure_storage v9 的 web 插件不兼容 Flutter 3.44,
|
||
// 待其升级到 v10+ 后恢复加密存储。
|
||
// TODO: 恢复 flutter_secure_storage 加密存储
|
||
|
||
import 'package:shared_preferences/shared_preferences.dart';
|
||
|
||
import 'secure_token_store.dart';
|
||
|
||
/// 原生平台安全令牌存储(临时使用 shared_preferences)
|
||
class NativeSecureTokenStore implements SecureTokenStore {
|
||
SharedPreferences? _prefs;
|
||
|
||
Future<SharedPreferences> get _instance async {
|
||
return _prefs ??= await SharedPreferences.getInstance();
|
||
}
|
||
|
||
@override
|
||
Future<String?> read(String key) async {
|
||
final prefs = await _instance;
|
||
return prefs.getString(key);
|
||
}
|
||
|
||
@override
|
||
Future<void> write(String key, String value) async {
|
||
final prefs = await _instance;
|
||
await prefs.setString(key, value);
|
||
}
|
||
|
||
@override
|
||
Future<void> delete(String key) async {
|
||
final prefs = await _instance;
|
||
await prefs.remove(key);
|
||
}
|
||
}
|