This commit is contained in:
Hamza-Ayed
2024-01-23 00:43:45 +03:00
parent ec7f2de651
commit 8aaca3630d
11 changed files with 125 additions and 71 deletions

View File

@@ -2,8 +2,10 @@ import 'dart:convert';
import 'dart:io';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:get/get.dart';
import 'package:http/http.dart' as http;
import 'package:ride/views/widgets/elevated_btn.dart';
import '../../constant/api_key.dart';
import '../../constant/box_name.dart';
@@ -11,6 +13,7 @@ import '../../constant/colors.dart';
import '../../constant/links.dart';
import '../../constant/style.dart';
import '../../main.dart';
import '../../views/home/Captin/home_captain/home_captin.dart';
import '../../views/home/profile/promos_passenger_page.dart';
import '../../views/home/Captin/orderCaptin/order_request_page.dart';
@@ -160,6 +163,15 @@ class FirebaseMessagesController extends GetxController {
);
} else if (message.notification!.title!.contains('Promo')) {
Get.to(const PromosPassengerPage());
} else if (message.notification!.title == 'Cancel Trip') {
Get.defaultDialog(
title: 'Passenger Cancel Trip'.tr,
middleText: '',
confirm: MyElevatedButton(
title: 'Ok'.tr,
onPressed: () {
Get.offAll(HomeCaptain());
}));
} else if (message.notification!.title!
.contains('DriverIsGoingToPassenger')) {
Get.snackbar('Driver is Going To Passenger', '',
@@ -201,7 +213,9 @@ class FirebaseMessagesController extends GetxController {
'notification': <String, dynamic>{
'title': title,
'body': body,
'sound': 'assets/notify.mp3'
'sound': Platform.isAndroid
? 'android/app/src/main/res/raw/tone1.mp3'
: 'tone2.wav'
},
'priority': 'high',
'data': <String, dynamic>{
@@ -259,7 +273,9 @@ class FirebaseMessagesController extends GetxController {
'notification': <String, dynamic>{
'title': title,
'body': body,
'sound': 'assets/notify.mp3'
'sound': Platform.isAndroid
? 'android/app/src/main/res/raw/tone1.mp3'
: 'tone2.wav'
},
'data': {
'passengerList': map,
@@ -296,7 +312,7 @@ class FirebaseMessagesController extends GetxController {
'notification': <String, dynamic>{
'title': title,
'body': body,
'sound': 'assets/notify.mp3'
'sound': Platform.isAndroid ? 'tone2' : 'tone2.wav'
},
'data': <String, dynamic>{
'click_action': 'FLUTTER_NOTIFICATION_CLICK',
@@ -335,7 +351,10 @@ class FirebaseMessagesController extends GetxController {
'notification': <String, dynamic>{
'title': title,
'body': body,
'sound': 'assets/notify.mp3'
// 'sound': 'tone2.wav',
'sound': Platform.isAndroid
? 'android/app/src/main/res/raw/tone1.mp3'
: 'tone2.wav'
},
'data': {
'DriverList': data,

View File

@@ -6,6 +6,8 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:google_polyline_algorithm/google_polyline_algorithm.dart';
import 'package:ride/constant/style.dart';
import 'package:ride/views/widgets/elevated_btn.dart';
import '../../../constant/api_key.dart';
import '../../../constant/box_name.dart';
@@ -72,6 +74,7 @@ class MapDriverController extends GetxController {
late Timer timer;
String? mapAPIKEY;
final zones = <Zone>[];
String canelString = 'yet';
void onMapCreated(GoogleMapController controller) async {
myLocation = Get.find<LocationController>().location as LatLng;
@@ -257,7 +260,6 @@ class MapDriverController extends GetxController {
tokenPassenger);
}
String canelString = '';
void cancelCheckRidefromPassenger() async {
var res = await CRUD().get(link: AppLink.getOrderCancelStatus, payload: {
'order_id': rideId,
@@ -265,10 +267,9 @@ class MapDriverController extends GetxController {
print('Cancel fetch--------------------');
var response = jsonDecode(res);
canelString = response['data']['status'];
print('cancel is $canelString');
update();
if (response['data']['status'].toString() == 'Cancel') {
Get.snackbar('Order Cancelled'.tr, 'Order Cancelled by Passenger'.tr,
backgroundColor: AppColor.redColor);
if (canelString == 'Cancel') {
remainingTimeTimerRideBegin = 0;
remainingTimeToShowPassengerInfoWindowFromDriver = 0;
remainingTimeToPassenger = 0;
@@ -277,6 +278,18 @@ class MapDriverController extends GetxController {
isPassengerInfoWindow = false;
clearPolyline();
update();
Get.defaultDialog(
title: 'Order Cancelled'.tr,
titleStyle: AppStyle.title,
middleText: 'Order Cancelled by Passenger'.tr,
middleTextStyle: AppStyle.title,
confirm: MyElevatedButton(
title: 'Ok'.tr,
onPressed: () {
Get.offAll(HomeCaptain());
},
),
);
}
}

View File

@@ -110,6 +110,7 @@ class MapPassengerController extends GetxController {
bool isPaymentMethodPageShown = false;
bool isRideFinished = false;
bool rideConfirm = false;
bool isMarkersShown = false;
bool isMainBottomMenuMap = true;
bool isWayPointSheet = false;
bool isWayPointStopsSheet = false;
@@ -869,6 +870,13 @@ class MapPassengerController extends GetxController {
// clearPolylineAll();
data = [];
changeCancelRidePageShow();
if (rideId != '') {
await CRUD().post(link: AppLink.updateDriverOrder, payload: {
"order_id": rideId.toString(), // Convert to String
"status": 'Cancel'
});
}
rideConfirm = false;
shouldFetch = false;
isCashConfirmPageShown = false;
@@ -886,6 +894,8 @@ class MapPassengerController extends GetxController {
"order_id": rideId.toString(), // Convert to String
"status": 'Cancel'
});
FirebaseMessagesController().sendNotificationToDriverMAP(
'Cancel Trip', 'Trip Cancelled'.tr, driverToken, []);
isPickerShown = false;
rideConfirm = false;
shouldFetch = false;
@@ -1079,27 +1089,17 @@ class MapPassengerController extends GetxController {
polylineCoordinatesPointsAll[2].clear();
polylineCoordinatesPointsAll[3].clear();
polylineCoordinatesPointsAll[4].clear();
isMarkersShown = false;
update();
}
// void clearPolylineAll() {
// polylineCoordinatesPointsAll[0].clear();
// polylineCoordinatesPointsAll[1].clear();
// polylineCoordinatesPointsAll[2].clear();
// polylineCoordinatesPointsAll[3].clear();
// polylineCoordinatesPointsAll[4].clear();
// polyLines = [];
// polylineCoordinates.clear();
// update();
// }
void addCustomPicker() {
ImageConfiguration config = const ImageConfiguration(
size: Size(20, 20),
// scale: 1.0,
);
BitmapDescriptor.fromAssetImage(config, 'assets/images/picker.png')
ImageConfiguration config = ImageConfiguration(
size: const Size(30, 30), devicePixelRatio: Get.pixelRatio
// scale: 1.0,
);
BitmapDescriptor.fromAssetImage(config, 'assets/images/picker.png',
mipmaps: false)
.then((value) {
markerIcon = value;
update();
@@ -1109,9 +1109,8 @@ class MapPassengerController extends GetxController {
void addCustomStartIcon() async {
// Create the marker with the resized image
ImageConfiguration config = const ImageConfiguration(
size: Size(20, 20),
);
ImageConfiguration config = ImageConfiguration(
size: const Size(30, 30), devicePixelRatio: Get.pixelRatio);
BitmapDescriptor.fromAssetImage(config, 'assets/images/A.png',
mipmaps: false)
.then((value) {
@@ -1122,9 +1121,9 @@ class MapPassengerController extends GetxController {
void addCustomEndIcon() {
ImageConfiguration config = ImageConfiguration(
size: Size(Get.width * .6, Get.height * .6),
);
BitmapDescriptor.fromAssetImage(config, 'assets/images/b.png')
size: const Size(30, 30), devicePixelRatio: Get.pixelRatio);
BitmapDescriptor.fromAssetImage(config, 'assets/images/b.png',
mipmaps: false)
.then((value) {
endIcon = value;
update();
@@ -1132,12 +1131,14 @@ class MapPassengerController extends GetxController {
}
void addCustomCarIcon() {
ImageConfiguration config = const ImageConfiguration(
// size: Size(Get.width * .6, Get.height * .6),
size: Size(20, 20),
// scale: 1.0,
);
BitmapDescriptor.fromAssetImage(config, 'assets/images/car.png')
ImageConfiguration config = ImageConfiguration(
// size: Size(Get.width * .6, Get.height * .6),
size: const Size(30, 30),
devicePixelRatio: Get.pixelRatio
// scale: 1.0,
);
BitmapDescriptor.fromAssetImage(config, 'assets/images/car.png',
mipmaps: false)
.then((value) {
carIcon = value;
update();
@@ -1428,6 +1429,7 @@ class MapPassengerController extends GetxController {
polyLines.add(polyline);
rideConfirm = false;
isMarkersShown = true;
update();
}
}
@@ -1501,6 +1503,7 @@ class MapPassengerController extends GetxController {
polyLines.add(polyline);
rideConfirm = false;
isMarkersShown = true;
update();
}
}

View File

@@ -148,39 +148,41 @@ class GoogleMapPassengerWidget extends StatelessWidget {
position: carLocation,
icon: controller.carIcon,
markerId: MarkerId(carLocation.toString())),
Marker(
markerId: MarkerId('MyLocation'.tr),
position: controller.newStartPointLocation,
draggable: true,
icon: controller.startIcon,
infoWindow: const InfoWindow(
title: 'Time',
anchor: Offset(0.5, 0.5), // Adjust the anchor as needed
// snippet: controller.durationFromDriverToPassenger
// .toString(),
),
onDragEnd: (value) {
print(value);
},
// infoWindow: InfoWindow(title: 'my location'.tr),
),
Marker(
markerId: MarkerId('Destination'.tr),
position: controller.newMyLocation,
draggable: true,
icon: controller.endIcon,
infoWindow: InfoWindow(
anchor: const Offset(0.5, 0),
if (controller.isMarkersShown)
Marker(
markerId: MarkerId('MyLocation'.tr),
position: controller.newStartPointLocation,
draggable: true,
icon: controller.startIcon,
infoWindow: const InfoWindow(
title: 'Time',
snippet: controller.durationByPassenger.toString()
anchor: Offset(0.5, 0.5), // Adjust the anchor as needed
// snippet: controller.durationFromDriverToPassenger
// .toString(),
),
onDragEnd: (value) {
print(value);
},
// infoWindow: InfoWindow(title: 'my location'.tr),
),
),
onDragEnd: (value) {
print(value);
},
// infoWindow: InfoWindow(title: 'my location'.tr),
),
if (controller.isMarkersShown)
Marker(
markerId: MarkerId('Destination'.tr),
position: controller.newMyLocation,
draggable: true,
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);
},
// infoWindow: InfoWindow(title: 'my location'.tr),
),
// Marker(
// markerId: MarkerId('Target'.tr),
// position: controller.myDestination,

View File

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ride/constant/box_name.dart';
import 'package:ride/constant/style.dart';
import 'package:ride/controller/firebase/firbase_messge.dart';
import 'package:ride/controller/home/map_passenger_controller.dart';
import 'package:ride/main.dart';
import 'package:ride/views/home/map_widget.dart/form_search_places.dart';
@@ -272,6 +273,20 @@ class MainBottomMenuMap extends StatelessWidget {
style: AppStyle.title,
),
),
IconButton(
onPressed: () {
FirebaseMessagesController()
.sendNotificationToAnyWithoutData(
'title',
'body',
// 'e5IXztYGS1W9zFvv-gmMRL:APA91bF7-fFzksCRXIk0Fm7IfQuhHL0df-vnDW8DNNKa3sWea649j3Obc8PhyJo9UOxKBtrvoJxYcbjclFKpvycAuhG0lv_e4hkavy-LZ6SsAu5J5bYrPz6-0BbyLdLUHoBuOFlNMvmN');
'eoV61-RSFUxLrCa88xaSG2:APA91bFmgGVTVH0mhjGhFqrB2_rMf0l0udBUzEUW-V2XlxtnYeDTnpESYRRCI_tMQnbDqQ3PK7pFMzW0-CZolS-pURSkwbwvnbVtV9VHB2UuOrKG3MYpGFsWfmjUdyRIOe30nx-eVkOu');
},
icon: const Icon(
Icons.add,
color: AppColor.blueColor,
),
),
],
)
],