import 'dart:async'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/controller/auth/captin/login_captin_controller.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:background_location/background_location.dart'; import 'package:get/get.dart'; import 'package:permission_handler/permission_handler.dart'; import '../../main.dart'; class LocationBackgroundController extends GetxController { @override Future onInit() async { super.onInit(); // await requestLocationPermission(); await configureBackgroundLocation(); } Future requestLocationPermission() async { var status = await Permission.locationAlways.status; print('Initial status: $status'); if (status.isDenied || status.isRestricted) { // Request permission status = await Permission.locationAlways.request(); print('Requested status: $status'); } if (status.isPermanentlyDenied) { // Open app settings if permission is permanently denied openAppSettings(); box.write(BoxName.locationPermission, 'true'); Get.find().update(); } else if (status.isGranted) { // Permission granted box.write(BoxName.locationPermission, 'true'); Get.find().update(); } } Future configureBackgroundLocation() async { await BackgroundLocation.setAndroidNotification( title: "Sefer Driver ", message: "Tracking location...", icon: "app_icon", ); BackgroundLocation.setAndroidConfiguration(1000); BackgroundLocation.startLocationService(); BackgroundLocation.getLocationUpdates((location) { // Handle location updates here print("New location: ${location.latitude}, ${location.longitude}"); }); } startBackLocation() async { Timer.periodic(const Duration(seconds: 5), (timer) { getBackgroundLocation(); }); } getBackgroundLocation() async { var status = await Permission.locationAlways.status; if (status.isGranted) { await BackgroundLocation.startLocationService( distanceFilter: 20, forceAndroidLocationManager: true); BackgroundLocation.setAndroidConfiguration( Duration.microsecondsPerSecond); // Set interval to 5 seconds BackgroundLocation.getLocationUpdates((location1) { print('''\n Latitude: ${location1.latitude.toString()} Longitude: ${location1.longitude.toString()} Altitude: ${location1.altitude.toString()} Accuracy: ${location1.accuracy.toString()} Bearing: ${location1.bearing.toString()} Speed: ${location1.speed.toString()} '''); }); } else { await Permission.locationAlways.request(); print('Location permission not granted'); } } }