import 'package:workmanager/workmanager.dart'; import '../../models/home_config.dart'; import '../../services/geofence_worker.dart'; /// Синхронизировать состояние фонового таска с настройками домов. /// Вызывать при старте приложения и при изменении настроек. /// /// Если хотя бы один дом имеет geofenceReady -- регистрируем /// периодический таск. Иначе -- отменяем. Future syncGeofenceTask(List homes) async { final needGeofence = homes.any((h) => h.geofenceReady); if (needGeofence) { await resetGeofenceFired(); await Workmanager().registerPeriodicTask( geofenceTaskUniqueName, geofenceTaskName, frequency: const Duration(minutes: 15), constraints: Constraints(networkType: NetworkType.connected), existingWorkPolicy: ExistingPeriodicWorkPolicy.replace, backoffPolicy: BackoffPolicy.linear, backoffPolicyDelay: const Duration(minutes: 1), ); } else { await Workmanager().cancelByUniqueName(geofenceTaskUniqueName); } }