chore: 全面规范化代码,遵循 CLAUDE.md 编码规范
- C# 文件命名改为 snake_case(28 个文件重命名) - C# 类转换为主构造函数(8 个类) - 空 catch 添加异常类型(2 处) - 新建 GlobalUsings.cs(Health.Infrastructure、Health.WebApi) - Flutter 移除 go_router,改用 Riverpod 路由栈 - Flutter 移除 flutter_secure_storage,改用 sqflite 持久化 - 修复 Flutter 构建路径(Flutter SDK 迁至 D 盘) - 后端端口改为 0.0.0.0:5000,支持局域网访问
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import '../core/api_client.dart';
|
||||
import '../core/secure_storage.dart';
|
||||
import '../core/local_database.dart';
|
||||
|
||||
/// 用户简要信息
|
||||
class UserInfo {
|
||||
@@ -25,10 +25,10 @@ class AuthState {
|
||||
/// 认证 Provider
|
||||
final authProvider = NotifierProvider<AuthNotifier, AuthState>(AuthNotifier.new);
|
||||
|
||||
final secureStorageProvider = Provider<SecureStorage>((ref) => SecureStorage());
|
||||
final localDbProvider = Provider<LocalDatabase>((ref) => LocalDatabase.instance);
|
||||
|
||||
final apiClientProvider = Provider<ApiClient>((ref) {
|
||||
return ApiClient(storage: ref.watch(secureStorageProvider));
|
||||
return ApiClient(db: ref.watch(localDbProvider));
|
||||
});
|
||||
|
||||
class AuthNotifier extends Notifier<AuthState> {
|
||||
@@ -39,8 +39,8 @@ class AuthNotifier extends Notifier<AuthState> {
|
||||
}
|
||||
|
||||
Future<void> _checkAuth() async {
|
||||
final storage = ref.read(secureStorageProvider);
|
||||
final refresh = await storage.readRefreshToken();
|
||||
final db = ref.read(localDbProvider);
|
||||
final refresh = await db.read('refresh_token');
|
||||
if (refresh == null) {
|
||||
state = const AuthState(isLoggedIn: false, isLoading: false);
|
||||
return;
|
||||
@@ -51,8 +51,8 @@ class AuthNotifier extends Notifier<AuthState> {
|
||||
.post('/api/auth/refresh', data: {'refreshToken': refresh});
|
||||
final data = response.data['data'];
|
||||
if (data != null) {
|
||||
await storage.writeAccessToken(data['accessToken']);
|
||||
await storage.writeRefreshToken(data['refreshToken']);
|
||||
await db.write('access_token', data['accessToken']);
|
||||
await db.write('refresh_token', data['refreshToken']);
|
||||
state = AuthState(
|
||||
isLoggedIn: true,
|
||||
isLoading: false,
|
||||
@@ -128,8 +128,8 @@ class AuthNotifier extends Notifier<AuthState> {
|
||||
/// 登出
|
||||
Future<void> logout() async {
|
||||
final api = ref.read(apiClientProvider);
|
||||
final storage = ref.read(secureStorageProvider);
|
||||
final refresh = await storage.readRefreshToken();
|
||||
final db = ref.read(localDbProvider);
|
||||
final refresh = await db.read('refresh_token');
|
||||
if (refresh != null) {
|
||||
try { await api.post('/api/auth/logout', data: {'refreshToken': refresh}); } catch (_) {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user