From 474b523d3c8606485859ed9f0b84a323d63f80ab Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Mon, 15 Jan 2024 12:40:19 +0300 Subject: [PATCH] 1/15/1 --- assets/images/A.png | Bin 0 -> 6947 bytes assets/images/b.png | Bin 0 -> 6809 bytes ios/Runner/AppDelegate.swift | 3 +- ios/Runner/Constants.swift | 1 + .../home/map_passenger_controller.dart | 62 +++++++++++------- .../form_serch_multiy_point.dart | 2 + .../google_map_passenger_widget.dart | 23 +++++-- 7 files changed, 61 insertions(+), 30 deletions(-) create mode 100644 assets/images/A.png create mode 100644 assets/images/b.png create mode 100644 ios/Runner/Constants.swift diff --git a/assets/images/A.png b/assets/images/A.png new file mode 100644 index 0000000000000000000000000000000000000000..246b9d21ca997536c0ec1da7f4d6cb99b3b73f79 GIT binary patch literal 6947 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 TNAWI~fBGmZXvn{jwFv$XK}*|f literal 0 HcmV?d00001 diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index bbd72a5..d75847c 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -2,6 +2,7 @@ import UIKit import Flutter import FirebaseCore import GoogleMaps +import Constants @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { @@ -10,7 +11,7 @@ import GoogleMaps _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { - GMSServices.provideAPIKey("AIzaSyCyfwRXTwSTLOFQSQgN5p7QZgGJVZnEKq0") + GMSServices.provideAPIKey(mapsApiKey) FirebaseApp.configure() GeneratedPluginRegistrant.register(with: self) return true diff --git a/ios/Runner/Constants.swift b/ios/Runner/Constants.swift new file mode 100644 index 0000000..8085844 --- /dev/null +++ b/ios/Runner/Constants.swift @@ -0,0 +1 @@ +let mapsApiKey = "AIzaSyCyfwRXTwSTLOFQSQgN5p7QZgGJVZnEKq0" \ No newline at end of file diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 031b4aa..8b97044 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -8,6 +8,7 @@ import 'package:google_polyline_algorithm/google_polyline_algorithm.dart'; import 'package:location/location.dart'; import 'package:ride/constant/colors.dart'; import 'package:ride/constant/style.dart'; +import 'package:ride/controller/home/points_for_rider_controller.dart'; import 'package:ride/views/home/map_page_passenger.dart'; import 'package:ride/views/home/map_widget.dart/form_serch_multiy_point.dart'; import '../../constant/api_key.dart'; @@ -77,6 +78,8 @@ class MapPassengerController extends GetxController { List driverCarsLocationToPassengerAfterApplied = []; BitmapDescriptor markerIcon = BitmapDescriptor.defaultMarker; BitmapDescriptor tripIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor startIcon = BitmapDescriptor.defaultMarker; + BitmapDescriptor endIcon = BitmapDescriptor.defaultMarker; BitmapDescriptor carIcon = BitmapDescriptor.defaultMarker; double height = 150; DateTime currentTime = DateTime.now(); @@ -170,6 +173,7 @@ class MapPassengerController extends GetxController { List currentLocationToFormPlacesAll = []; late String driverToken; int carsOrder = 0; + int wayPointIndex = 0; String? mapAPIKEY; late double totalME = 0; late double tax = 0; @@ -873,25 +877,22 @@ class MapPassengerController extends GetxController { } void changeMainBottomMenuMap() { - print(isWayPointStopsSheetUtilGetMap); - if (isWayPointStopsSheetUtilGetMap == true) { - isWayPointSheet = true; - wayPointSheetHeight = isWayPointSheet == false ? 0 : Get.height * .4; - update(); - } else { - isMainBottomMenuMap = !isMainBottomMenuMap; - mainBottomMenuMapHeight = - isMainBottomMenuMap == true ? Get.height * .2 : Get.height * .7; - if (heightMenuBool == true) { - getDrawerMenu(); - } - update(); + // else { + isMainBottomMenuMap = !isMainBottomMenuMap; + mainBottomMenuMapHeight = + isMainBottomMenuMap == true ? Get.height * .2 : Get.height * .7; + isWayPointSheet = false; + if (heightMenuBool == true) { + getDrawerMenu(); } + + update(); + // } } void changeWayPointSheet() { isWayPointSheet = !isWayPointSheet; - wayPointSheetHeight = isWayPointSheet == false ? 0 : Get.height * .4; + wayPointSheetHeight = isWayPointSheet == false ? 0 : Get.height * .45; // if (heightMenuBool == true) { // getDrawerMenu(); // } @@ -899,9 +900,14 @@ class MapPassengerController extends GetxController { } void changeWayPointStopsSheet() { - isWayPointStopsSheetUtilGetMap = true; + int waypointsLength = Get.find().wayPoints.length; + print('isWayPointStopsSheet $waypointsLength'); + if (waypointsLength > 2) { + isWayPointStopsSheet = true; + isWayPointStopsSheetUtilGetMap = true; + } isWayPointStopsSheet = !isWayPointStopsSheet; - wayPointSheetHeight = isWayPointStopsSheet == false ? 0 : Get.height * .4; + wayPointSheetHeight = isWayPointStopsSheet == false ? 0 : Get.height * .45; // if (heightMenuBool == true) { // getDrawerMenu(); // } @@ -1082,13 +1088,24 @@ class MapPassengerController extends GetxController { }); } - void addCustomTripIcon() { + void addCustomStartIcon() { ImageConfiguration config = ImageConfiguration( size: Size(Get.width * .6, Get.height * .6), ); - BitmapDescriptor.fromAssetImage(config, 'assets/images/brand.png') + BitmapDescriptor.fromAssetImage(config, 'assets/images/A.png') .then((value) { - tripIcon = value; + startIcon = value; + update(); + }); + } + + void addCustomEndIcon() { + ImageConfiguration config = ImageConfiguration( + size: Size(Get.width * .6, Get.height * .6), + ); + BitmapDescriptor.fromAssetImage(config, 'assets/images/b.png') + .then((value) { + endIcon = value; update(); }); } @@ -1395,14 +1412,14 @@ class MapPassengerController extends GetxController { } int totalStepDurations = 0; - getMapPoints(String origin, destination, int index) async { + getMapPoints(String origin, String destination, int index) async { isWayPointStopsSheetUtilGetMap = false; await getCarsLocationByPassenger(); isLoading = false; update(); var url = ('${AppLink.googleMapsLink}directions/json?&language=en&avoid=tolls|ferries&destination=$destination&origin=$origin&key=${AK.mapAPIKEY}'); - + print(url); var response = await CRUD().getGoogleApi(link: url, payload: {}); data = response['routes'][0]['legs']; // print(data); @@ -1676,7 +1693,8 @@ class MapPassengerController extends GetxController { getNearestDriverByPassengerLocation(); addCustomPicker(); addCustomCarIcon(); - addCustomTripIcon(); + addCustomStartIcon(); + addCustomEndIcon(); startMarkerReloading(); cardNumber = await SecureStorage().readData(BoxName.cardNumber); diff --git a/lib/views/home/map_widget.dart/form_serch_multiy_point.dart b/lib/views/home/map_widget.dart/form_serch_multiy_point.dart index b1c6b4d..f86c483 100644 --- a/lib/views/home/map_widget.dart/form_serch_multiy_point.dart +++ b/lib/views/home/map_widget.dart/form_serch_multiy_point.dart @@ -58,6 +58,8 @@ GetBuilder formSearchPlaces(int index) { ? InkWell( onTap: () { controller.startLocationFromMapAll[index] = true; + controller.wayPointIndex = index; + print(controller.wayPointIndex); Get.back(); // controller.changeMainBottomMenuMap(); controller.changeWayPointStopsSheet(); diff --git a/lib/views/home/map_widget.dart/google_map_passenger_widget.dart b/lib/views/home/map_widget.dart/google_map_passenger_widget.dart index f75f8c1..cb36096 100644 --- a/lib/views/home/map_widget.dart/google_map_passenger_widget.dart +++ b/lib/views/home/map_widget.dart/google_map_passenger_widget.dart @@ -152,7 +152,7 @@ class GoogleMapPassengerWidget extends StatelessWidget { markerId: MarkerId('MyLocation'.tr), position: controller.newStartPointLocation, draggable: true, - icon: controller.tripIcon, + icon: controller.startIcon, infoWindow: const InfoWindow( title: 'Time', // snippet: controller.durationFromDriverToPassenger @@ -167,12 +167,14 @@ class GoogleMapPassengerWidget extends StatelessWidget { markerId: MarkerId('Destination'.tr), position: controller.newMyLocation, draggable: true, - icon: controller.tripIcon, - infoWindow: const InfoWindow( - title: 'Time', - // snippet: controller.durationFromDriverToPassenger - // .toString(), - ), + icon: controller.endIcon, + infoWindow: InfoWindow( + anchor: const Offset(0.5, 0), + title: 'Time', + snippet: controller.durationByPassenger.toString() + // snippet: controller.durationFromDriverToPassenger + // .toString(), + ), onDragEnd: (value) { print(value); }, @@ -295,6 +297,13 @@ class GoogleMapPassengerWidget extends StatelessWidget { buildingsEnabled: true, mapToolbarEnabled: true, onCameraMove: (position) { + int waypointsLength = + Get.find().wayPoints.length; + int index = controller.wayPointIndex; + if (waypointsLength > 0) { + controller.placesCoordinate[index] = + '${position.target.latitude.toString()},${position.target.longitude}'; + } if (controller.startLocationFromMap == true) { controller.newStartPointLocation = position.target; }