149 lines
5.1 KiB
Dart
149 lines
5.1 KiB
Dart
// 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<void> startLocationUpdates() async {
|
|
// if (box.read(BoxName.driverID) != null) {
|
|
// _locationTimer =
|
|
// Timer.periodic(const Duration(seconds: 5), (timer) async {
|
|
// try {
|
|
// totalPoints = Get.find<CaptainWalletController>().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<void> 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<HomeCaptainController>().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;
|
|
// }
|
|
// }
|