Files
AI-Health/health_app/lib/core/app_router.dart
MingNian c70d5d4be6 fix: 管理员系统 + 注册流程重构 + UI改版 + 全链路修复
- 新增管理员角色(手机号12345678910),管理员可增删医生、查看患者
- 注册页重构:去掉角色选择+审核码,改为选医生+填姓名
- 医生端点按DoctorId过滤患者,Patient↔Doctor关系建立
- Doctor/DoctorProfile/User实体新增关联字段
- JSON循环引用修复(IgnoreCycles)
- /api/doctors改为公开接口
- 登录闪屏修复+原生Android启动页
- 输入框全局白底+灰框
- 蓝牙重连同步修复
- Web端(doctor_web+health_app/web)全部删除
- 全局UI改版:白底企业风,新配色和组件系统
- 新品牌图标和启动图
2026-06-16 15:16:44 +08:00

77 lines
3.8 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/profile/profile_page.dart';
import '../pages/profile/service_package_detail_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 'consultation': return DoctorChatPage(id: params['id']!);
case 'exercisePlan': 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 'staticText': return StaticTextPage(type: params['type']!);
case 'servicePackageDetail': return ServicePackageDetailPage(packageId: params['id']!);
case 'dietDetail': return DietRecordDetailPage(id: params['id']!);
default: return const LoginPage();
}
}
// ── 医生端次级页面 Stubs逐步实现──