import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'auth_provider.dart'; import '../services/health_service.dart'; /// 健康数据服务 final healthServiceProvider = Provider((ref) { return HealthService(ref.watch(apiClientProvider)); }); final userServiceProvider = Provider((ref) { return UserService(ref.watch(apiClientProvider)); }); final medicationServiceProvider = Provider((ref) { return MedicationService(ref.watch(apiClientProvider)); }); final dietServiceProvider = Provider((ref) { return DietService(ref.watch(apiClientProvider)); }); final consultationServiceProvider = Provider((ref) { return ConsultationService(ref.watch(apiClientProvider)); }); final exerciseServiceProvider = Provider((ref) { return ExerciseService(ref.watch(apiClientProvider)); }); /// 最新健康数据 Provider final latestHealthProvider = FutureProvider>((ref) async { final service = ref.watch(healthServiceProvider); return service.getLatest(); }); /// AI 录入数据后调用,刷新侧边栏 void refreshHealthData(WidgetRef ref) { ref.invalidate(latestHealthProvider); ref.invalidate(medicationListProvider); } /// 用药列表 Provider final medicationListProvider = FutureProvider>>((ref) async { final service = ref.watch(medicationServiceProvider); return service.getList(); }); final medicationReminderProvider = FutureProvider>>((ref) async { final service = ref.watch(medicationServiceProvider); return service.getReminders(); }); /// 医生列表 Provider final doctorListProvider = FutureProvider>>((ref) async { final service = ref.watch(consultationServiceProvider); try { return await service.getDoctors().timeout(const Duration(seconds: 8)); } catch (_) { return _fallbackDoctors; } }); const _fallbackDoctors = [ { 'id': 'doc_1', 'name': '张医生', 'title': '主任医师', 'department': '心内科', 'introduction': '擅长冠心病、高血压术后管理,20年临床经验', }, { 'id': 'doc_2', 'name': '李医生', 'title': '副主任医师', 'department': '内分泌科', 'introduction': '擅长糖尿病、甲状腺疾病管理,15年临床经验', }, { 'id': 'doc_3', 'name': '王医生', 'title': '主治医师', 'department': '营养科', 'introduction': '擅长术后营养指导、饮食方案制定,10年临床经验', }, ]; /// 问诊配额 Provider final consultationQuotaProvider = FutureProvider>((ref) async { final service = ref.watch(consultationServiceProvider); return service.getQuota(); }); /// 当前运动计划 Provider final currentExercisePlanProvider = FutureProvider?>((ref) async { final service = ref.watch(exerciseServiceProvider); try { return await service.getCurrentPlan().timeout(const Duration(seconds: 8)); } catch (_) { return null; } }); /// 拍照/相册直接触发(无需跳转页面) final cameraActionProvider = NotifierProvider(CameraActionNotifier.new); class CameraActionNotifier extends Notifier { @override String? build() => null; void trigger(String action) => state = action; void clear() => state = null; }