import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../homes/providers/homes_providers.dart'; import '../../homes/providers/location_providers.dart'; import '../../shared/providers/core_providers.dart'; import '../models/app_theme_preset.dart'; import '../models/geofence_system_state.dart'; import '../models/notification_permission_status.dart'; import '../services/geofence_system_status_service.dart'; import '../services/notification_permission_status_service.dart'; final initialAppThemePresetProvider = Provider( (ref) => AppThemePreset.fallback, ); final appThemeProvider = NotifierProvider( AppThemeNotifier.new, ); class AppThemeNotifier extends Notifier { @override AppThemePreset build() => ref.read(initialAppThemePresetProvider); Future setTheme(AppThemePreset preset) async { if (state == preset) { return; } state = preset; await ref.read(settingsServiceProvider).setAppThemePreset(preset); } } final geofenceSystemStatusServiceProvider = Provider( (ref) => DeviceGeofenceSystemStatusService( locationPlatformService: ref.read(locationPlatformServiceProvider), ), ); final geofenceSystemStatusProvider = FutureProvider(( ref, ) async { final currentHome = ref.watch(currentHomeProvider); return ref .watch(geofenceSystemStatusServiceProvider) .inspect( hasActiveHome: currentHome != null, hasCoordinates: currentHome?.hasCoordinates == true, ); }); final notificationPermissionStatusServiceProvider = Provider( (ref) => DeviceNotificationPermissionStatusService(), ); final notificationPermissionStatusProvider = FutureProvider((ref) async { return ref.watch(notificationPermissionStatusServiceProvider).inspect(); });