import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'auth_provider.dart'; import '../services/health_service.dart'; import '../services/admin_service.dart'; final exerciseServiceProvider = Provider((ref) { return ExerciseService(ref.watch(apiClientProvider)); }); /// 健康数据服务 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 followUpServiceProvider = Provider((ref) { return FollowUpService(ref.watch(apiClientProvider)); }); final consultationServiceProvider = Provider((ref) { return ConsultationService(ref.watch(apiClientProvider)); }); final adminServiceProvider = Provider((ref) { return AdminService(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); return service.getDoctors().timeout(const Duration(seconds: 8)); }); /// 问诊配额 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); return service.getCurrentPlan().timeout(const Duration(seconds: 8)); }); /// 拍照/相册直接触发(无需跳转页面) final cameraActionProvider = NotifierProvider(CameraActionNotifier.new); class CameraActionNotifier extends Notifier { @override String? build() => null; void trigger(String action) => state = action; void clear() => state = null; } /// 拍饮食动作触发(不用跳多余页面) final dietActionProvider = NotifierProvider(DietActionNotifier.new); class DietActionNotifier extends Notifier { @override String? build() => null; void trigger(String action) => state = action; void clear() => state = null; }