Geofence
This commit is contained in:
@@ -1,10 +1,28 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:workmanager/workmanager.dart';
|
||||
import 'providers/providers.dart';
|
||||
import 'screens/homes_screen.dart';
|
||||
import 'screens/remote_screen.dart';
|
||||
import 'services/geofence_worker.dart';
|
||||
|
||||
/// Top-level callback для workmanager (выполняется в отдельном изоляте).
|
||||
@pragma('vm:entry-point')
|
||||
void callbackDispatcher() {
|
||||
Workmanager().executeTask((taskName, inputData) async {
|
||||
if (taskName == geofenceTaskName) {
|
||||
return await executeGeofenceCheck();
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
void main() {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
// Инициализация workmanager
|
||||
Workmanager().initialize(callbackDispatcher, isInDebugMode: false);
|
||||
|
||||
runApp(const ProviderScope(child: IgnisApp()));
|
||||
}
|
||||
|
||||
@@ -72,6 +90,10 @@ class _MainGateState extends ConsumerState<MainGate> {
|
||||
await ref.read(groupsProvider.notifier).initAndRefresh();
|
||||
// Загружаем info об авторизации (admin / не admin)
|
||||
await ref.read(authInfoProvider.notifier).load();
|
||||
|
||||
// Запускаем / обновляем геофенс-таск если нужно
|
||||
await syncGeofenceTask(ref.read(homesProvider));
|
||||
|
||||
if (mounted) {
|
||||
Navigator.of(context).pushReplacement(
|
||||
MaterialPageRoute(builder: (_) => const RemoteScreen()),
|
||||
@@ -110,4 +132,4 @@ class _MainGateState extends ConsumerState<MainGate> {
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user