Files
AI-Health/health_app/lib/core/app_router.dart
MingNian c6395ea9b4 feat: 全功能前后端联调完成,47/47 测试通过
前端:
- 新增 DietCapturePage 独立拍照识别页
- 5种消息卡片类型完整实现(数据确认/用药/饮食/报告/快捷选项)
- 任务卡片区:异常警告+数据摘要+自动折叠
- 侧滑抽屉:历史对话列表+对话管理
- 运动计划:进度卡片+创建计划+每日打卡
- 报告页:拍照/相册/PDF上传+分析
- 面板按钮补全血氧/体重录入
- UI 升级:紫色主题+动画+气泡样式
- 全部迁移 Riverpod 3.x API

后端:
- 新增 _UpdateMessageTypeAndMetadata,Tool Calling 自动映射消息类型
- SSE answer 事件携带 type 字段
- 提示词优化(移除"阿福",语气规则归位)
- 运动计划支持 AI 创建和打卡

测试:
- 新增 full_e2e_test.py 全流程测试(认证/数据CRUD/6个Agent对话/VLM/报告)
2026-06-02 20:31:22 +08:00

64 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'navigation_provider.dart';
import '../pages/auth/login_page.dart';
import '../pages/home/home_page.dart';
import '../pages/chart/trend_page.dart';
import '../pages/medication/medication_list_page.dart';
import '../pages/report/report_pages.dart';
import '../pages/consultation/consultation_pages.dart';
import '../pages/settings/settings_pages.dart';
import '../pages/profile/profile_page.dart';
import '../pages/diet/diet_capture_page.dart';
import '../pages/remaining_pages.dart';
/// 根据路由信息返回对应页面
Widget buildPage(RouteInfo route) {
final params = route.params;
switch (route.name) {
case 'login':
return const LoginPage();
case 'home':
return const HomePage();
case 'trend':
return TrendPage(metricType: params['type'] ?? '');
case 'calendar':
return const HealthCalendarPage();
case 'medications':
return const MedicationListPage();
case 'medicationAdd':
return const MedicationEditPage();
case 'medicationEdit':
return MedicationEditPage(id: params['id']);
case 'reports':
return const ReportListPage();
case 'reportDetail':
return ReportDetailPage(id: params['id']!);
case 'doctors':
return const DoctorListPage();
case 'consultation':
return DoctorChatPage(id: params['id']!);
case 'exercisePlan':
return const ExercisePlanPage();
case 'dietRecords':
return const DietRecordListPage();
case 'dietCapture':
return const DietCapturePage();
case 'profile':
return const ProfilePage();
case 'profileEdit':
return const EditProfilePage();
case 'healthArchive':
return const HealthArchivePage();
case 'followups':
return const FollowUpListPage();
case 'settings':
return const SettingsPage();
case 'notificationPrefs':
return const NotificationPrefsPage();
case 'staticText':
return StaticTextPage(type: params['type']!);
default:
return const LoginPage();
}
}