diff --git a/lib/controller/functions/location_controller.dart b/lib/controller/functions/location_controller.dart index ef3dfed..070c3ec 100644 --- a/lib/controller/functions/location_controller.dart +++ b/lib/controller/functions/location_controller.dart @@ -6,7 +6,6 @@ import 'package:location/location.dart'; import 'package:ride/constant/box_name.dart'; import 'package:ride/constant/links.dart'; import 'package:ride/controller/functions/crud.dart'; -import 'package:ride/controller/home/captin/map_driver_controller.dart'; import 'package:ride/main.dart'; // LocationController.dart diff --git a/lib/controller/home/captin/map_driver_controller.dart b/lib/controller/home/captin/map_driver_controller.dart index 88e4e96..ee744f3 100644 --- a/lib/controller/home/captin/map_driver_controller.dart +++ b/lib/controller/home/captin/map_driver_controller.dart @@ -35,6 +35,7 @@ class MapDriverController extends GetxController { late String durationToPassenger; late String walletChecked; late String direction; + late String durationOfRideValue; late String status; bool isPassengerInfoWindow = false; bool isBtnRideBegin = false; @@ -50,7 +51,9 @@ class MapDriverController extends GetxController { bool isDriverNearPassengerStart = false; GoogleMapController? mapController; late LatLng myLocation; - + int remainingTimeTimerRideBegin = 60; + String stringRemainingTimeRideBegin = ''; + double progressTimerRideBegin = 0; late Timer timer; void onMapCreated(GoogleMapController controller) { @@ -59,7 +62,7 @@ class MapDriverController extends GetxController { mapController = controller; controller.getVisibleRegion(); controller.animateCamera( - CameraUpdate.newLatLngZoom(myLocation, 10), + CameraUpdate.newLatLngZoom(myLocation, 15), ); update(); @@ -173,12 +176,14 @@ class MapDriverController extends GetxController { isRideStarted = true; isRideFinished = false; box.write(BoxName.statusDriverLocation, 'on'); + update(); await CRUD().post(link: AppLink.updateRides, payload: { 'id': rideId, 'rideTimeStart': DateTime.now().toString(), 'status': 'Begin' }); + rideIsBeginPassengerTimer(); // FirebaseMessagesController().sendNotificationToAnyWithoutData( // 'RideIsBegin', box.read(BoxName.name).toString(), tokenPassenger); } @@ -204,6 +209,24 @@ class MapDriverController extends GetxController { // 'isRideFinished', box.read(BoxName.name).toString(), tokenPassenger); } + void rideIsBeginPassengerTimer() async { + // print('mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm'); + // print(durationOfRideValue); + int durationOfRide = int.parse(durationOfRideValue); + + for (int i = 0; i <= durationOfRide; i++) { + await Future.delayed(const Duration(seconds: 1)); + progressTimerRideBegin = i / durationOfRide; + remainingTimeTimerRideBegin = durationOfRide - i; + + int minutes = (remainingTimeTimerRideBegin / 60).floor(); + int seconds = remainingTimeTimerRideBegin % 60; + stringRemainingTimeRideBegin = + '$minutes:${seconds.toString().padLeft(2, '0')}'; + update(); + } + } + void updateMarker() { // Remove the existing marker with the ID `MyLocation`. markers.remove(MarkerId('MyLocation'.tr)); @@ -310,6 +333,7 @@ class MapDriverController extends GetxController { direction = Get.arguments['direction']; durationToPassenger = Get.arguments['DurationToPassenger']; rideId = Get.arguments['rideId']; + durationOfRideValue = Get.arguments['durationOfRideValue']; String lat = Get.find().myLocation.latitude.toString(); String lng = Get.find().myLocation.longitude.toString(); String origin = '$lat,$lng'; diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index d52762a..79343e2 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -308,7 +308,8 @@ class MapPassengerController extends GetxController { rideId, rideTimerBegin.toString(), dataCarsLocationByPassenger['message'][carsOrder]['driver_id'] - .toString() + .toString(), + durationToRide.toString() ]; FirebaseMessagesController().sendNotificationToDriverMAP( 'Order', diff --git a/lib/views/home/map_widget.dart/passenger_info_window.dart b/lib/views/home/map_widget.dart/passenger_info_window.dart index e318758..5386167 100644 --- a/lib/views/home/map_widget.dart/passenger_info_window.dart +++ b/lib/views/home/map_widget.dart/passenger_info_window.dart @@ -8,9 +8,7 @@ import 'package:ride/controller/home/captin/map_driver_controller.dart'; import 'package:ride/main.dart'; import 'package:ride/views/widgets/elevated_btn.dart'; -import '../../../constant/links.dart'; import '../../../constant/style.dart'; -import '../../../controller/functions/crud.dart'; import '../../../controller/functions/launch.dart'; class PassengerInfoWindow extends StatelessWidget { diff --git a/lib/views/orderCaptin/driver_map_page.dart b/lib/views/orderCaptin/driver_map_page.dart index e7d8354..1678c0b 100644 --- a/lib/views/orderCaptin/driver_map_page.dart +++ b/lib/views/orderCaptin/driver_map_page.dart @@ -76,37 +76,71 @@ class PassengerLocationMapPage extends StatelessWidget { right: 5, child: Container( decoration: AppStyle.boxDecoration, - height: 60, + height: 100, width: 200, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, + child: Column( children: [ - Column( + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ - const Icon(Icons.social_distance), - Text( - mapDriverController.distance.toString() + - ' ' + - 'KM'.tr, - style: AppStyle.title, + Column( + children: [ + const Icon(Icons.social_distance), + Text( + mapDriverController.distance.toString() + + ' ' + + 'KM'.tr, + style: AppStyle.title, + ), + ], + ), + mapDriverController + .remainingTimeTimerRideBegin < + 60 + ? MyElevatedButton( + title: 'End Ride'.tr, + onPressed: () { + mapDriverController + .finishRideFromDriver(); + }, + kolor: AppColor.redColor, + ) + : const SizedBox(), + Column( + children: [ + const Icon(Icons.timelapse), + Text( + mapDriverController.duration + .toString() + + ' ' + + 'Minute'.tr, + style: AppStyle.title), + ], ), ], ), - MyElevatedButton( - title: 'End Ride'.tr, - onPressed: () { - mapDriverController.finishRideFromDriver(); - }, - kolor: AppColor.redColor, - ), - Column( + Stack( children: [ - const Icon(Icons.timelapse), - Text( - mapDriverController.duration.toString() + - ' ' + - 'Minute'.tr, - style: AppStyle.title), + LinearProgressIndicator( + backgroundColor: AppColor.accentColor, + color: mapDriverController + .remainingTimeTimerRideBegin < + 60 + ? AppColor.redColor + : AppColor.greenColor, + minHeight: 40, + borderRadius: BorderRadius.circular(15), + value: mapDriverController + .progressTimerRideBegin + .toDouble(), + ), + Center( + child: Text( + mapDriverController + .stringRemainingTimeRideBegin, + style: AppStyle.title, + ), + ) ], ), ], diff --git a/lib/views/orderCaptin/order_request_page.dart b/lib/views/orderCaptin/order_request_page.dart index 980999a..484f078 100644 --- a/lib/views/orderCaptin/order_request_page.dart +++ b/lib/views/orderCaptin/order_request_page.dart @@ -204,6 +204,7 @@ class OrderRequestPage extends StatelessWidget { 'rideId': myList[16].toString(), 'passengerId': myList[7].toString(), 'driverId': myList[18].toString(), + 'durationOfRideValue': myList[19].toString(), }); }, ),