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:
56
health_app/lib/core/navigation_provider.dart
Normal file
56
health_app/lib/core/navigation_provider.dart
Normal file
@@ -0,0 +1,56 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
/// 路由信息
|
||||
class RouteInfo {
|
||||
final String name;
|
||||
final Map<String, String> params;
|
||||
const RouteInfo(this.name, {this.params = const {}});
|
||||
|
||||
String param(String key) => params[key] ?? '';
|
||||
}
|
||||
|
||||
/// 路由栈 Notifier
|
||||
class RouteStackNotifier extends Notifier<List<RouteInfo>> {
|
||||
@override
|
||||
List<RouteInfo> build() => [const RouteInfo('login')];
|
||||
|
||||
void replace(String name, {Map<String, String> params = const {}}) {
|
||||
state = [RouteInfo(name, params: params)];
|
||||
}
|
||||
|
||||
void push(String name, {Map<String, String> params = const {}}) {
|
||||
state = [...state, RouteInfo(name, params: params)];
|
||||
}
|
||||
|
||||
void pop() {
|
||||
if (state.length > 1) {
|
||||
state = state.sublist(0, state.length - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 路由栈 Provider
|
||||
final routeStackProvider =
|
||||
NotifierProvider<RouteStackNotifier, List<RouteInfo>>(RouteStackNotifier.new);
|
||||
|
||||
/// 当前路由
|
||||
final currentRouteProvider = Provider<RouteInfo>((ref) {
|
||||
final stack = ref.watch(routeStackProvider);
|
||||
return stack.last;
|
||||
});
|
||||
|
||||
/// 跳转(替换整个栈)
|
||||
void goRoute(WidgetRef ref, String name, {Map<String, String> params = const {}}) {
|
||||
ref.read(routeStackProvider.notifier).replace(name, params: params);
|
||||
}
|
||||
|
||||
/// 推入新页面
|
||||
void pushRoute(WidgetRef ref, String name, {Map<String, String> params = const {}}) {
|
||||
ref.read(routeStackProvider.notifier).push(name, params: params);
|
||||
}
|
||||
|
||||
/// 返回上一页
|
||||
void popRoute(WidgetRef ref) {
|
||||
ref.read(routeStackProvider.notifier).pop();
|
||||
}
|
||||
Reference in New Issue
Block a user