// import 'dart:async'; // import 'package:get/get.dart'; // import 'package:google_maps_flutter/google_maps_flutter.dart'; // import 'package:location/location.dart'; // import 'package:Intaleq/constant/box_name.dart'; // import 'package:Intaleq/constant/links.dart'; // import 'package:Intaleq/controller/functions/crud.dart'; // import 'package:Intaleq/controller/home/payment/captain_wallet_controller.dart'; // import 'package:Intaleq/main.dart'; // // LocationController.dart // class LocationController extends GetxController { // LocationData? _currentLocation; // late Location location; // bool isLoading = false; // late double heading = 0; // late double accuracy = 0; // late double previousTime = 0; // late double latitude; // late double totalDistance = 0; // late double longitude; // late DateTime time; // late double speed = 0; // late double speedAccuracy = 0; // late double headingAccuracy = 0; // bool isActive = false; // late LatLng myLocation; // String totalPoints = '0'; // LocationData? get currentLocation => _currentLocation; // Timer? _locationTimer; // @override // void onInit() async { // super.onInit(); // location = Location(); // getLocation(); // // startLocationUpdates(); // totalPoints = Get.put(CaptainWalletController()).totalPoints; // } // Future startLocationUpdates() async { // if (box.read(BoxName.driverID) != null) { // _locationTimer = // Timer.periodic(const Duration(seconds: 5), (timer) async { // try { // totalPoints = Get.find().totalPoints; // // if (isActive) { // if (double.parse(totalPoints) > -300) { // await getLocation(); // // if (box.read(BoxName.driverID) != null) { // await CRUD() // .post(link: AppLink.addCarsLocationByPassenger, payload: { // 'driver_id': box.read(BoxName.driverID).toString(), // 'latitude': myLocation.latitude.toString(), // 'longitude': myLocation.longitude.toString(), // 'heading': heading.toString(), // 'speed': (speed * 3.6).toStringAsFixed(1), // 'distance': totalDistance == 0 // ? '0' // : totalDistance < 1 // ? totalDistance.toStringAsFixed(3) // : totalDistance.toStringAsFixed(1), // 'status': box.read(BoxName.statusDriverLocation).toString() // }); // } // // } // } catch (e) { // // Handle the error gracefully // } // }); // } // } // void stopLocationUpdates() { // _locationTimer?.cancel(); // } // Future getLocation() async { // // isLoading = true; // // update(); // bool serviceEnabled; // PermissionStatus permissionGranted; // // Check if location services are enabled // serviceEnabled = await location.serviceEnabled(); // if (!serviceEnabled) { // serviceEnabled = await location.requestService(); // if (!serviceEnabled) { // // Location services are still not enabled, handle the error // return; // } // } // // Check if the app has permission to access location // permissionGranted = await location.hasPermission(); // if (permissionGranted == PermissionStatus.denied) { // permissionGranted = await location.requestPermission(); // if (permissionGranted != PermissionStatus.granted) { // // Location permission is still not granted, handle the error // return; // } // } // // Configure location accuracy // // LocationAccuracy desiredAccuracy = LocationAccuracy.high; // // Get the current location // LocationData _locationData = await location.getLocation(); // myLocation = // (_locationData.latitude != null && _locationData.longitude != null // ? LatLng(_locationData.latitude!, _locationData.longitude!) // : null)!; // speed = _locationData.speed!; // heading = _locationData.heading!; // // Calculate the distance between the current location and the previous location // // if (Get.find().rideId == 'rideId') { // // if (previousTime > 0) { // // double distance = calculateDistanceInKmPerHour( // // previousTime, _locationData.time, speed); // // totalDistance += distance; // // } // // previousTime = _locationData.time!; // // } // // Print location details // // isLoading = false; // update(); // } // double calculateDistanceInKmPerHour( // double? startTime, double? endTime, double speedInMetersPerSecond) { // // Calculate the time difference in hours // double timeDifferenceInHours = (endTime! - startTime!) / 1000 / 3600; // // Convert speed to kilometers per hour // double speedInKmPerHour = speedInMetersPerSecond * 3.6; // // Calculate the distance in kilometers // double distanceInKilometers = speedInKmPerHour * timeDifferenceInHours; // return distanceInKilometers; // } // }