first commit

This commit is contained in:
2026-09-21 17:37:53 +08:00
commit 67d4dd5b7c
141 changed files with 8558 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
/// 本地存储封装:token / userInfo / 记住密码
/// (对齐 uniApp 的 uni.setStorageSync / getStorageSync 用法)
class LocalStorage {
LocalStorage._();
static final LocalStorage instance = LocalStorage._();
SharedPreferences? _prefs;
/// App 启动时调用一次,确保后续同步读取可用
Future<void> init() async {
_prefs ??= await SharedPreferences.getInstance();
}
Future<SharedPreferences> _getPrefs() async {
return _prefs ??= await SharedPreferences.getInstance();
}
// ---- 认证 ----
static const _keyToken = 'token';
static const _keyUserInfo = 'userInfo';
Future<void> setAuth({required String token, required Map<String, dynamic> userInfo}) async {
final prefs = await _getPrefs();
await prefs.setString(_keyToken, token);
await prefs.setString(_keyUserInfo, jsonEncode(userInfo));
}
Future<void> clearAuth() async {
final prefs = await _getPrefs();
await prefs.remove(_keyToken);
await prefs.remove(_keyUserInfo);
}
String? getToken() => _prefs?.getString(_keyToken);
Map<String, dynamic>? getUserInfo() {
final raw = _prefs?.getString(_keyUserInfo);
if (raw == null) return null;
try {
return jsonDecode(raw) as Map<String, dynamic>;
} catch (_) {
return null;
}
}
// ---- 记住密码 ----
static const _keySavedUsername = 'saved_username';
static const _keySavedPassword = 'saved_password';
Future<void> saveRememberedPassword(String username, String encryptedPassword) async {
final prefs = await _getPrefs();
await prefs.setString(_keySavedUsername, username);
await prefs.setString(_keySavedPassword, encryptedPassword);
}
Future<void> clearRememberedPassword() async {
final prefs = await _getPrefs();
await prefs.remove(_keySavedUsername);
await prefs.remove(_keySavedPassword);
}
({String username, String password})? getRememberedAccount() {
final username = _prefs?.getString(_keySavedUsername);
final password = _prefs?.getString(_keySavedPassword);
if (username == null || password == null) return null;
return (username: username, password: password);
}
}