105 lines
3.8 KiB
Dart
105 lines
3.8 KiB
Dart
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/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 '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 'dietDetail':
|
||
return DietRecordDetailPage(id: params['id']!);
|
||
default:
|
||
return const LoginPage();
|
||
}
|
||
}
|
||
|
||
// ── 医生端次级页面 Stubs(逐步实现)──
|