import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:ttstd_family_care/features/device/data/device_api.dart'; import 'package:ttstd_family_care/features/device/data/device_repository_impl.dart'; import 'package:ttstd_family_care/features/device/domain/device_models.dart'; import 'package:ttstd_family_care/features/device/domain/device_repository.dart'; /// 设备仓储 Provider。 final deviceRepositoryProvider = Provider((ref) { const api = DeviceApi(); return DeviceRepositoryImpl(api); }); /// 当前用户已绑定设备列表。 final myDevicesProvider = FutureProvider>((ref) async { final repo = ref.watch(deviceRepositoryProvider); return repo.getMyDevices(); }); /// 当前选中的设备序列号(默认取绑定列表首个设备)。 /// /// 使用普通 Provider(而非 StateProvider)以便随 [myDevicesProvider] 的加载完成 /// 自动推导出首个已绑定设备的 SN。若后续需要手动切换设备,可改为 StateProvider。 final selectedDeviceSnProvider = Provider((ref) { final devices = ref.watch(myDevicesProvider); return devices.maybeWhen( data: (list) => list.isEmpty ? null : list.first.serialno, orElse: () => null, ); }); /// 按 SN 获取设备基本信息。 final deviceInfoProvider = FutureProvider.family((ref, sn) async { if (sn.isEmpty) return null; final repo = ref.watch(deviceRepositoryProvider); return repo.getDeviceInfo(sn); }); /// 按 SN 获取设备最新定位信息。 final deviceLocationProvider = FutureProvider.family((ref, sn) async { if (sn.isEmpty) return null; final repo = ref.watch(deviceRepositoryProvider); return repo.getLocation(sn); }); /// 按 SN 获取设备已安装应用列表。 final deviceApksProvider = FutureProvider.family, String>((ref, sn) async { if (sn.isEmpty) return const []; final repo = ref.watch(deviceRepositoryProvider); return repo.getApks(sn); }); /// 按 SN 获取设备最近截图列表。 final recentScreenshotsProvider = FutureProvider.family, String>((ref, sn) async { if (sn.isEmpty) return const []; final repo = ref.watch(deviceRepositoryProvider); return repo.getRecentScreenshots(sn); });