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:
MingNian
2026-06-02 12:41:06 +08:00
parent 14d7c30d3d
commit 6e69f1085e
47 changed files with 342 additions and 428 deletions

View File

@@ -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 (_) {}
}