Files
AI-Health/health_app/lib/core/navigation_provider.dart
MingNian 78573eaa5f fix: VLM 参数优化 - temperature 0.7, top_p 0.8, 指令放 system+user
- VisionAsync 新增 Temperature=0.7, TopP=0.8
- system prompt 用专业营养识别指令
- userText 用简短"请看图识别食物"配合图片
- 修复重复 prompt 导致 VLM 误读文本的 bug
2026-06-03 11:12:06 +08:00

56 lines
1.5 KiB
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();
}