Files
AI-Health/health_app/lib/core/app_router.dart
MingNian 7a93237069 feat: AI 对话附件上下文解析 + 历史会话归档 + 多页面 UI 重构
- 后端: 新增 AttachmentContextBuilder 解析图片/PDF 摘要并拼入 LLM 上下文; ai_chat_endpoints 扩展附件接口; 新增 ReportAnalysisService
- 前端: 新增历史会话页与 conversation_history_provider; chat 链路支持附件展示与回放
- UI: 重构 medication_checkin / notification_center / profile / health_drawer 等多页面
- 配置: api_client baseUrl 适配当前 WiFi IP
2026-07-06 12:44:59 +08:00

118 lines
4.3 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.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/medication/medication_checkin_page.dart';
import '../pages/medication/medication_edit_page.dart';
import '../pages/report/report_pages.dart';
import '../pages/report/ai_analysis_page.dart';
import '../pages/consultation/consultation_pages.dart';
import '../pages/settings/settings_pages.dart';
import '../pages/settings/notification_prefs_page.dart';
import '../pages/notifications/notification_center_page.dart';
import '../pages/history/conversation_history_page.dart';
import '../pages/profile/profile_page.dart';
import '../pages/diet/diet_capture_page.dart';
import '../pages/device/device_scan_page.dart';
import '../pages/device/device_management_page.dart';
import '../pages/remaining_pages.dart';
import '../pages/doctor/doctor_home_page.dart';
import '../pages/doctor/doctor_patient_detail_page.dart';
import '../pages/doctor/doctor_report_detail_page.dart';
import '../pages/doctor/doctor_followup_edit_page.dart';
import '../pages/doctor/doctor_settings_page.dart';
import '../pages/doctor/doctor_profile_page.dart';
import '../pages/admin/admin_home_page.dart';
import '../pages/admin/admin_add_doctor_page.dart';
import '../providers/auth_provider.dart' show userRoleProvider;
/// 根据路由信息返回对应页面
Widget buildPage(RouteInfo route, WidgetRef ref) {
final params = route.params;
switch (route.name) {
case 'login':
return const LoginPage();
case 'home':
final role = ref.watch(userRoleProvider);
return role == 'Doctor' ? const DoctorHomePage() : const HomePage();
case 'doctorHome':
return const DoctorHomePage();
case 'adminHome':
return const AdminHomePage();
case 'adminAddDoctor':
return const AdminAddDoctorPage();
case 'trend':
return TrendPage(
metricType: params['type']?.isNotEmpty == true ? params['type'] : null,
);
case 'calendar':
return const HealthCalendarPage();
case 'medications':
return const MedicationListPage();
case 'medCheckIn':
return MedicationCheckInPage(medId: params['id']);
case 'medicationEdit':
return const MedicationEditPage();
case 'reports':
return const ReportListPage();
case 'aiAnalysis':
return AiAnalysisPage(id: params['id']!);
case 'reportOriginal':
return ReportOriginalPage(
url: params['url'] ?? '',
title: params['title'] ?? '原始报告',
);
case 'exercisePlan':
return const ExercisePlanPage();
case 'exercisePlanDetail':
return const ExercisePlanPage();
case 'exerciseCreate':
return const ExercisePlanCreatePage();
case 'dietRecords':
return const DietRecordListPage();
case 'dietCapture':
return const DietCapturePage();
case 'profile':
return const ProfilePage();
case 'doctorProfile':
return const DoctorProfileEditPage();
case 'doctorSettings':
return const DoctorSettingsPage();
case 'doctorPatientDetail':
return DoctorPatientDetailPage(id: params['id']!);
case 'doctorChat':
return DoctorChatPage(id: params['id']!);
case 'doctorReportDetail':
return DoctorReportDetailPage(id: params['id']!);
case 'doctorFollowUpEdit':
return DoctorFollowUpEditPage(id: params['id']!);
case 'devices':
return const DeviceManagementPage();
case 'deviceScan':
return const DeviceScanPage();
case 'healthArchive':
return const HealthArchivePage();
case 'followups':
return const FollowUpListPage();
case 'settings':
return const SettingsPage();
case 'notificationPrefs':
return const NotificationPrefsPage();
case 'notifications':
return const NotificationCenterPage();
case 'conversationHistory':
return const ConversationHistoryPage();
case 'staticText':
return StaticTextPage(type: params['type']!);
case 'dietDetail':
return DietRecordDetailPage(id: params['id']!);
default:
return const LoginPage();
}
}
// ── 医生端次级页面 Stubs逐步实现──