This commit is contained in:
Hamza-Ayed
2025-07-01 18:30:08 +03:00
parent cf8966ea29
commit 322e4b9788
11 changed files with 1445 additions and 74 deletions

View File

@@ -53,8 +53,8 @@ android {
applicationId = "com.mobileapp.store.ride" applicationId = "com.mobileapp.store.ride"
minSdk = 23 minSdk = 23
targetSdk = flutter.targetSdkVersion // Use flutter.targetSdkVersion targetSdk = flutter.targetSdkVersion // Use flutter.targetSdkVersion
versionCode = 132 versionCode = 133
versionName = '2.0.132' versionName = '2.0.133'
multiDexEnabled = true multiDexEnabled = true
ndk { ndk {

View File

@@ -41,11 +41,11 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>105</string> <string>106</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>5.0.995</string> <string>5.0.996</string>
<key>NSHumanReadableCopyright</key> <key>NSHumanReadableCopyright</key>
<string></string> <string></string>
<key>FirebaseAppDelegateProxyEnabled</key> <key>FirebaseAppDelegateProxyEnabled</key>

View File

@@ -184,9 +184,9 @@
if([SecurityChecks checkProcessName]){ if([SecurityChecks checkProcessName]){
return YES; return YES;
} }
if ([SecurityChecks isDebuggerAttached]) { // if ([SecurityChecks isDebuggerAttached]) {
return YES; // return YES;
} // }
// if ([SecurityChecks isFridaDetected]) { // if ([SecurityChecks isFridaDetected]) {
// return YES; // return YES;
// } // }

View File

@@ -121,13 +121,13 @@ class FirebaseMessagesController extends GetxController {
}); });
} }
void fireBaseTitles(RemoteMessage message) { Future<void> fireBaseTitles(RemoteMessage message) async {
if (message.notification!.title! == 'Order'.tr) { if (message.notification!.title! == 'Order'.tr) {
if (Platform.isAndroid) { if (Platform.isAndroid) {
notificationController.showNotification( notificationController.showNotification(
'Order', message.notification!.body!, 'Order'); 'Order', message.notification!.body!, 'Order');
} }
} else if (message.notification!.title! == 'Accepted Ride'.tr) { } else if (message.notification!.title! == 'Accepted Ride') {
if (Platform.isAndroid) { if (Platform.isAndroid) {
notificationController.showNotification( notificationController.showNotification(
'Accepted Ride'.tr, 'Driver Accepted the Ride for You'.tr, 'ding'); 'Accepted Ride'.tr, 'Driver Accepted the Ride for You'.tr, 'ding');
@@ -136,13 +136,16 @@ class FirebaseMessagesController extends GetxController {
var myList = jsonDecode(passengerList) as List<dynamic>; var myList = jsonDecode(passengerList) as List<dynamic>;
Log.print('myList: ${myList}'); Log.print('myList: ${myList}');
driverID = myList[0].toString(); final controller = Get.find<MapPassengerController>();
// Get.find<MapPassengerController>().driverToken = myList[2].toString(); controller.driverId = myList[0].toString();
// Log.print('driverToken: ${myList[2]}'); // assume rideId lives at index 2 in your list:
Get.find<MapPassengerController>().statusRide = 'Apply'; controller.rideId = myList[3].toString();
Get.find<MapPassengerController>().isSearchingWindow = false;
Get.find<MapPassengerController>().update(); controller
Get.find<MapPassengerController>().rideAppliedFromDriver(true); ..statusRide = 'Apply'
..isSearchingWindow = false
..update();
await controller.rideAppliedFromDriver(true);
// driverAppliedTripSnakBar(); // driverAppliedTripSnakBar();
} else if (message.notification!.title! == 'Promo'.tr) { } else if (message.notification!.title! == 'Promo'.tr) {
@@ -557,7 +560,9 @@ class FirebaseMessagesController extends GetxController {
// }); // });
// } // }
// } // }
late String serviceAccountKeyJson; late String serviceAccountKeyJson;
@override @override
Future<void> onInit() async { Future<void> onInit() async {
super.onInit(); super.onInit();
@@ -565,7 +570,8 @@ class FirebaseMessagesController extends GetxController {
var encryptedKey = await storage.read(key: 'FCM_PRIVATE_KEY'); var encryptedKey = await storage.read(key: 'FCM_PRIVATE_KEY');
// Log.print('encryptedKey: ${encryptedKey}'); // Log.print('encryptedKey: ${encryptedKey}');
if (encryptedKey != null) { if (encryptedKey != null) {
serviceAccountKeyJson = (encryptedKey); serviceAccountKeyJson =
EncryptionHelper.instance.decryptData(encryptedKey);
// Log.print('serviceAccountKeyJson: ${serviceAccountKeyJson}'); // Log.print('serviceAccountKeyJson: ${serviceAccountKeyJson}');
} else { } else {
print('🔴 Error: FCM_PRIVATE_KEY not found in Secure Storage'); print('🔴 Error: FCM_PRIVATE_KEY not found in Secure Storage');
@@ -647,11 +653,12 @@ class FirebaseMessagesController extends GetxController {
// Initialize AccessTokenManager // Initialize AccessTokenManager
final accessTokenManager = AccessTokenManager(serviceAccountKeyJson); final accessTokenManager = AccessTokenManager(serviceAccountKeyJson);
// Log.print('accessTokenManager: ${accessTokenManager}'); // Log.print(
// 'accessTokenManager: ${accessTokenManager.serviceAccountJsonKey}');
// Obtain an OAuth 2.0 access token // Obtain an OAuth 2.0 access token
final accessToken = await accessTokenManager.getAccessToken(); final accessToken = await accessTokenManager.getAccessToken();
Log.print('accessToken: ${accessToken}'); // Log.print('accessToken: ${accessToken}');
// Send the notification // Send the notification
final response = await http.post( final response = await http.post(

View File

@@ -35,6 +35,7 @@ import '../../models/model/painter_copoun.dart';
import '../../print.dart'; import '../../print.dart';
import '../../views/home/map_widget.dart/cancel_raide_page.dart'; import '../../views/home/map_widget.dart/cancel_raide_page.dart';
import '../../views/home/map_widget.dart/car_details_widget_to_go.dart'; import '../../views/home/map_widget.dart/car_details_widget_to_go.dart';
import '../../views/home/map_widget.dart/searching_captain_window.dart';
import '../../views/home/map_widget.dart/select_driver_mishwari.dart'; import '../../views/home/map_widget.dart/select_driver_mishwari.dart';
import '../../views/widgets/elevated_btn.dart'; import '../../views/widgets/elevated_btn.dart';
import '../../views/widgets/error_snakbar.dart'; import '../../views/widgets/error_snakbar.dart';
@@ -79,7 +80,10 @@ class MapPassengerController extends GetxController {
List wayPoint2 = []; List wayPoint2 = [];
List wayPoint3 = []; List wayPoint3 = [];
List wayPoint4 = []; List wayPoint4 = [];
final firebaseMessagesController =
Get.isRegistered<FirebaseMessagesController>()
? Get.find<FirebaseMessagesController>()
: Get.put(FirebaseMessagesController());
List<List<dynamic>> placeListResponseAll = []; List<List<dynamic>> placeListResponseAll = [];
List<Widget> placeListResponse = [ List<Widget> placeListResponse = [
@@ -367,6 +371,8 @@ class MapPassengerController extends GetxController {
totalPassenger = double.parse(increasFeeFromPassenger.text); totalPassenger = double.parse(increasFeeFromPassenger.text);
Get.back(); Get.back();
if (rideId != 'yet') { if (rideId != 'yet') {
Log.print('rideId from increase: ${rideId}');
notifyAvailableDriversAgain();
await CRUD().post(link: AppLink.updateDriverOrder, payload: { await CRUD().post(link: AppLink.updateDriverOrder, payload: {
"order_id": rideId.toString(), // Convert to String "order_id": rideId.toString(), // Convert to String
"status": 'waiting' "status": 'waiting'
@@ -943,7 +949,7 @@ class MapPassengerController extends GetxController {
box.write(BoxName.passengerWalletTotal, '0'); box.write(BoxName.passengerWalletTotal, '0');
update(); update();
if (box.read(BoxName.parentTripSelected) == true) { if (box.read(BoxName.parentTripSelected) == true) {
Get.find<FirebaseMessagesController>().sendNotificationToPassengerToken( firebaseMessagesController.sendNotificationToPassengerToken(
"Finish Monitor".tr, "Finish Monitor".tr,
"Finish Monitor".tr, "Finish Monitor".tr,
box.read(BoxName.tokenParent), box.read(BoxName.tokenParent),
@@ -1531,7 +1537,7 @@ class MapPassengerController extends GetxController {
// passengerRate.toStringAsFixed(2), // passengerRate.toStringAsFixed(2),
// ]; // ];
// Log.print('body: ${body}'); // Log.print('body: ${body}');
// Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP( // firebaseMessagesController.sendNotificationToDriverMAP(
// 'OrderSpeed', // 'OrderSpeed',
// rideId, // rideId,
// driverData['token'].toString(), // driverData['token'].toString(),
@@ -1674,7 +1680,7 @@ class MapPassengerController extends GetxController {
// ]; // ];
// // Log.print('body: ${body}'); // // Log.print('body: ${body}');
// Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP( // firebaseMessagesController.sendNotificationToDriverMAP(
// 'OrderSpeed', // 'OrderSpeed',
// rideId.toString(), // rideId.toString(),
// dataCarsLocationByPassenger['message'][i]['token'].toString(), // dataCarsLocationByPassenger['message'][i]['token'].toString(),
@@ -1957,8 +1963,8 @@ class MapPassengerController extends GetxController {
Future.delayed(const Duration(microseconds: 10)); Future.delayed(const Duration(microseconds: 10));
final body = constructNotificationBody(driverData); final body = constructNotificationBody(driverData);
Log.print('body:ww ${body}'); Log.print('body:ww ${body}');
Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP( firebaseMessagesController.sendNotificationToDriverMAP(
'Order'.tr, 'Order', // without tr since background not valid
endNameAddress, endNameAddress,
(driverData['token'].toString()), (driverData['token'].toString()),
body, body,
@@ -1970,6 +1976,53 @@ class MapPassengerController extends GetxController {
} }
} }
Future<void> notifyAvailableDriversAgain() async {
Log.print('[DEBUG] Starting notifyAvailableDriversAgain()');
await getCarsLocationByPassengerAndReloadMarker(
box.read(BoxName.carType), 3000);
Log.print(
'[DEBUG] Found drivers to notify: ${dataCarsLocationByPassenger['message']?.length}');
if (dataCarsLocationByPassenger != null &&
dataCarsLocationByPassenger.containsKey('message') &&
dataCarsLocationByPassenger['message'] != null) {
for (var driverData in dataCarsLocationByPassenger['message']) {
String driverId = driverData['driver_id'].toString();
if (!notifiedDrivers.contains(driverId)) {
notifiedDrivers.add(driverId);
double driverLat = double.parse(driverData['latitude']);
double driverLng = double.parse(driverData['longitude']);
double distanceToDriverInMeters = Geolocator.distanceBetween(
passengerLocation.latitude,
passengerLocation.longitude,
driverLat,
driverLng,
);
double distanceToDriverInKm = distanceToDriverInMeters *
1.25 / //to approximate to stright distance
1000;
double durationToDriverInHours =
distanceToDriverInKm / 25; // 25 km/h as default speed
double durationToDriverInSeconds = durationToDriverInHours * 3600;
durationToPassenger = durationToDriverInSeconds.toInt();
distanceByPassenger =
(distanceToDriverInMeters * 1.25).toStringAsFixed(0);
Future.delayed(const Duration(microseconds: 10));
final body = constructNotificationBody(driverData);
// Log.print('body:ww ${body}');
Log.print(
'[DEBUG] Sending to driver: ${driverData['driver_id']}, token: ${driverData['token']}');
firebaseMessagesController.sendNotificationToDriverMAP(
'Order', // without tr since background not valid
endNameAddress,
(driverData['token'].toString()),
body,
'order.wav');
}
}
}
}
List<String> constructNotificationBody(var driverData) { List<String> constructNotificationBody(var driverData) {
final paymentController = Get.find<PaymentController>(); final paymentController = Get.find<PaymentController>();
return [ return [
@@ -2019,7 +2072,7 @@ class MapPassengerController extends GetxController {
StreamController<String>.broadcast(); StreamController<String>.broadcast();
Stream<String> get rideStatusStream => _rideStatusStreamController.stream; Stream<String> get rideStatusStream => _rideStatusStreamController.stream;
int maxAttempts = 15; int maxAttempts = 28;
Future<void> delayAndFetchRideStatusForAllDriverAvailable( Future<void> delayAndFetchRideStatusForAllDriverAvailable(
String rideId) async { String rideId) async {
@@ -2039,7 +2092,6 @@ class MapPassengerController extends GetxController {
try { try {
var res = await getRideStatus(rideId); var res = await getRideStatus(rideId);
Log.print('res:2047 $res');
String rideStatusDelayed = res.toString(); String rideStatusDelayed = res.toString();
Log.print('rideStatusDelayed: $rideStatusDelayed'); Log.print('rideStatusDelayed: $rideStatusDelayed');
@@ -2061,15 +2113,33 @@ class MapPassengerController extends GetxController {
timer.cancel(); timer.cancel();
// Close stream after applying // Close stream after applying
} else if (attemptCounter >= maxAttempts || } else if (attemptCounter >= maxAttempts ||
rideStatusDelayed != 'Cancel') { rideStatusDelayed == 'waiting') {
timer.cancel(); //todo // timer.cancel(); //todo
// addRideToNotificationDriverString(); // addRideToNotificationDriverString();
// Show dialog to increase fee... // Show dialog to increase fee...
MyDialog().getDialog(
'Are you want to wait drivers to accept your order'.tr, '', () { // buildTimerForIncrease();
Get.back(); Get.defaultDialog(
addRideToNotificationDriverAvailable(); title: 'Are you want to wait drivers to accept your order'.tr,
}); middleText: '',
onConfirm: () {
Log.print('[DEBUG] User chose to wait again');
Get.back();
notifyAvailableDriversAgain();
delayAndFetchRideStatusForAllDriverAvailable(rideId);
// addRideToNotificationDriverAvailable();
},
onCancel: () {
timer.cancel();
Get.back();
showCancelRideBottomSheet();
},
);
// MyDialog().getDialog(
// 'Are you want to wait drivers to accept your order'.tr, '', () {
// Get.back();
// addRideToNotificationDriverAvailable();
// });
update(); update();
_rideStatusStreamController _rideStatusStreamController
.close(); // Close stream after max attempts .close(); // Close stream after max attempts
@@ -2083,7 +2153,7 @@ class MapPassengerController extends GetxController {
rideAppliedFromDriver(bool isApplied) async { rideAppliedFromDriver(bool isApplied) async {
await getUpdatedRideForDriverApply(rideId); await getUpdatedRideForDriverApply(rideId);
NotificationController().showNotification( NotificationController().showNotification(
'Order Accepted'.tr, 'Accepted Ride'.tr,
'$driverName ${'accepted your order at price'.tr} ${totalPassenger.toStringAsFixed(1)} ${'with type'.tr} ${box.read(BoxName.carType)}', '$driverName ${'accepted your order at price'.tr} ${totalPassenger.toStringAsFixed(1)} ${'with type'.tr} ${box.read(BoxName.carType)}',
'ding'); 'ding');
if (box.read(BoxName.carType) == 'Speed' || if (box.read(BoxName.carType) == 'Speed' ||
@@ -2202,7 +2272,7 @@ class MapPassengerController extends GetxController {
} }
// driversToken.remove(driverToken); // driversToken.remove(driverToken);
// for (var i = 1; i < driversToken.length; i++) { // for (var i = 1; i < driversToken.length; i++) {
Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP( firebaseMessagesController.sendNotificationToDriverMAP(
'Order Accepted'.tr, 'Order Accepted'.tr,
'$driverName${'Accepted your order'.tr}', '$driverName${'Accepted your order'.tr}',
driverToken.toString(), driverToken.toString(),
@@ -2920,7 +2990,7 @@ class MapPassengerController extends GetxController {
var tokenParent = (res1['data'][0]['token']); var tokenParent = (res1['data'][0]['token']);
Get.snackbar("The invitation was sent successfully".tr, '', Get.snackbar("The invitation was sent successfully".tr, '',
backgroundColor: AppColor.greenColor); backgroundColor: AppColor.greenColor);
Get.find<FirebaseMessagesController>().sendNotificationToPassengerToken( firebaseMessagesController.sendNotificationToPassengerToken(
"Trip Monitoring".tr, "Trip Monitoring".tr,
"Trip Monitoring".tr, "Trip Monitoring".tr,
tokenParent, tokenParent,
@@ -3157,7 +3227,7 @@ class MapPassengerController extends GetxController {
changeCancelRidePageShow(); changeCancelRidePageShow();
if (rideId != 'yet') { if (rideId != 'yet') {
Log.print('cancelRide: 1'); Log.print('cancelRide: 1');
await Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP( await firebaseMessagesController.sendNotificationToDriverMAP(
'Cancel Trip'.tr, 'Cancel Trip'.tr,
'Trip Cancelled'.tr, 'Trip Cancelled'.tr,
driverToken.toString(), driverToken.toString(),
@@ -5164,33 +5234,32 @@ class MapPassengerController extends GetxController {
timeSelected); timeSelected);
// Optionally, set up local notification or send a push notification // Optionally, set up local notification or send a push notification
await Get.find<FirebaseMessagesController>() await firebaseMessagesController.sendNotificationToDriverMAP(
.sendNotificationToDriverMAP( 'OrderVIP',
'OrderVIP', rideId.toString(),
rideId.toString(), (driver['token'].toString()),
(driver['token'].toString()), [
[ id,
id, rideId,
rideId, driver['id'],
driver['id'], passengerLocation.latitude.toString(),
passengerLocation.latitude.toString(), startNameAddress.toString(),
startNameAddress.toString(), passengerLocation.longitude.toString(),
passengerLocation.longitude.toString(), (box.read(BoxName.name).toString().split(' ')[0]).toString(),
(box.read(BoxName.name).toString().split(' ')[0]).toString(), box.read(BoxName.passengerID).toString(),
box.read(BoxName.passengerID).toString(), box.read(BoxName.phone).toString(),
box.read(BoxName.phone).toString(), box.read(BoxName.email).toString(),
box.read(BoxName.email).toString(), box.read(BoxName.passengerPhotoUrl).toString(),
box.read(BoxName.passengerPhotoUrl).toString(), box.read(BoxName.tokenFCM).toString(),
box.read(BoxName.tokenFCM).toString(), (driver['token'].toString()),
(driver['token'].toString()), ],
], 'order.wav');
'order.wav');
if (response['message'] == "Trip updated successfully") { if (response['message'] == "Trip updated successfully") {
mySnackbarSuccess("Trip updated successfully".tr); mySnackbarSuccess("Trip updated successfully".tr);
Log.print( Log.print(
'previous_driver_token: ${response['previous_driver_token']}'); 'previous_driver_token: ${response['previous_driver_token']}');
Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP( firebaseMessagesController.sendNotificationToDriverMAP(
'Order VIP Canceld'.tr, 'Order VIP Canceld'.tr,
'Passenger cancel order'.tr, 'Passenger cancel order'.tr,
response['previous_driver_token'].toString(), response['previous_driver_token'].toString(),
@@ -5214,7 +5283,7 @@ class MapPassengerController extends GetxController {
} }
cancelVip(String token, tripId) async { cancelVip(String token, tripId) async {
// Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP( // firebaseMessagesController.sendNotificationToDriverMAP(
// 'Order VIP Canceld'.tr, // 'Order VIP Canceld'.tr,
// 'Passenger cancel order'.tr, // 'Passenger cancel order'.tr,
// token, // token,
@@ -5230,7 +5299,7 @@ class MapPassengerController extends GetxController {
} }
sendToDriverAgain(String token) { sendToDriverAgain(String token) {
Get.find<FirebaseMessagesController>().sendNotificationToDriverMAP( firebaseMessagesController.sendNotificationToDriverMAP(
'Order VIP Canceld'.tr, 'Order VIP Canceld'.tr,
'Passenger cancel order'.tr, 'Passenger cancel order'.tr,
token, token,

File diff suppressed because it is too large Load Diff

View File

@@ -55,7 +55,7 @@ class MapPagePassenger extends StatelessWidget {
// const HeaderDestination(), // const HeaderDestination(),
const BurcMoney(), const BurcMoney(),
const PromoCode(), const PromoCode(),
const ApplyOrderWidget(), ApplyOrderWidget(),
const MapMenuWidget(), const MapMenuWidget(),
// hexagonClipper(), // hexagonClipper(),
const CancelRidePageShow(), const CancelRidePageShow(),

View File

@@ -13,8 +13,11 @@ import '../../../controller/functions/launch.dart';
import '../../widgets/my_textField.dart'; import '../../widgets/my_textField.dart';
class ApplyOrderWidget extends StatelessWidget { class ApplyOrderWidget extends StatelessWidget {
const ApplyOrderWidget({super.key}); ApplyOrderWidget({super.key});
final firebaseMessagesController =
Get.isRegistered<FirebaseMessagesController>()
? Get.find<FirebaseMessagesController>()
: Get.put(FirebaseMessagesController());
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Color _parseColor(String colorHex) { Color _parseColor(String colorHex) {
@@ -26,6 +29,8 @@ class ApplyOrderWidget extends StatelessWidget {
} }
return GetBuilder<MapPassengerController>(builder: (controller) { return GetBuilder<MapPassengerController>(builder: (controller) {
Get.put(
FirebaseMessagesController()); // Ensure FirebaseMessagesController is initialized
if (controller.statusRide == 'Apply' && !controller.isSearchingWindow) { if (controller.statusRide == 'Apply' && !controller.isSearchingWindow) {
return Positioned( return Positioned(
bottom: 0, bottom: 0,
@@ -257,8 +262,7 @@ class ApplyOrderWidget extends StatelessWidget {
padding: const EdgeInsets.only(bottom: 8.0), padding: const EdgeInsets.only(bottom: 8.0),
child: ElevatedButton( child: ElevatedButton(
onPressed: () { onPressed: () {
Get.find<FirebaseMessagesController>() firebaseMessagesController.sendNotificationToDriverMAP(
.sendNotificationToDriverMAP(
'message From passenger', 'message From passenger',
message.tr, message.tr,
controller.driverToken.toString(), controller.driverToken.toString(),
@@ -291,8 +295,7 @@ class ApplyOrderWidget extends StatelessWidget {
IconButton( IconButton(
onPressed: () { onPressed: () {
if (controller.messagesFormKey.currentState!.validate()) { if (controller.messagesFormKey.currentState!.validate()) {
Get.find<FirebaseMessagesController>() firebaseMessagesController.sendNotificationToDriverMAP(
.sendNotificationToDriverMAP(
'message From passenger', 'message From passenger',
controller.messageToDriver.text, controller.messageToDriver.text,
controller.driverToken, controller.driverToken,

View File

@@ -1,3 +1,5 @@
import 'package:Tripz/controller/firebase/firbase_messge.dart';
import 'package:Tripz/controller/functions/encrypt_decrypt.dart';
import 'package:Tripz/views/auth/sms_verfy_page.dart'; import 'package:Tripz/views/auth/sms_verfy_page.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -5,9 +7,13 @@ import 'package:flutter_font_icons/flutter_font_icons.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../../constant/colors.dart'; import '../../../constant/colors.dart';
import '../../../constant/table_names.dart';
import '../../../controller/functions/secure_storage.dart';
import '../../../controller/functions/tts.dart'; import '../../../controller/functions/tts.dart';
import '../../../controller/home/map_passenger_controller.dart'; import '../../../controller/home/map_passenger_controller.dart';
import '../../../controller/home/vip_waitting_page.dart'; import '../../../controller/home/vip_waitting_page.dart';
import '../../../main.dart';
import '../../../print.dart';
GetBuilder<MapPassengerController> leftMainMenuIcons() { GetBuilder<MapPassengerController> leftMainMenuIcons() {
Get.put(TextToSpeechController()); Get.put(TextToSpeechController());
@@ -77,12 +83,60 @@ class TestPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final firebaseMessagesController =
Get.isRegistered<FirebaseMessagesController>()
? Get.find<FirebaseMessagesController>()
: Get.put(FirebaseMessagesController());
return Scaffold( return Scaffold(
appBar: AppBar(), appBar: AppBar(),
body: Center( body: Center(
child: TextButton( child: TextButton(
onPressed: () async { onPressed: () async {
Get.to(SmsSignupEgypt()); firebaseMessagesController.sendNotificationToDriverMAP(
'Order',
'body',
'c2tXiuBJQCSg4CU4IfqYOL:APA91bFA0f8R3QMnPQnPEEdNyjY-jcoKt4nLBHxcLLsmDSuJn5yd4jSvwq7qDIZpkkPkjfjdwdKsGL0-G0aHpPyjfiBvbCwFmlRMCUKftNMNT7MJx2Bp16Y',
[
"32.1117875",
"36.0669891",
"32.1364001",
"36.0707479",
"24.84",
"7.56",
"436",
"4.38",
"109270481246447459618",
"113172279072358305645",
"hamza",
"e4QWqe7K607luM7qUMOPCL:APA91bFjX4XBM4I5COJl9fyxCTKJ1ZQpT3vzY7iEbOTuT4uo0-OSCAt5zgVhlhw4aC33s-VhyucDnP1tQGFd9svaazQ8A_SKgolPk3owzug8dCsiXoPeJ0k",
"+201010101010",
"6",
"43",
"true",
"c2tXiuBJQCSg4CU4IfqYOL:APA91bFA0f8R3QMnPQnPEEdNyjY-jcoKt4nLBHxcLLsmDSuJn5yd4jSvwq7qDIZpkkPkjfjdwdKsGL0-G0aHpPyjfiBvbCwFmlRMCUKftNMNT7MJx2Bp16Y",
"6",
"1188",
"false",
"109270481246447459618",
"436",
"startEnd",
"32.12404505187645",
"36.06566168367863",
"",
"",
"",
"",
"5.42",
"0",
"hamzaayedflutter@gmail.com",
"4368+PPP، السخنة، الأردن",
"43PC+C4G، السخنة، الأردن",
"Speed",
"8",
"5.00"
],
'ding.wav');
// await AppInitializer().getAIKey(Pasenger.FCM_PRIVATE_KEY);
}, },
child: Text( child: Text(
"Text Button", "Text Button",

View File

@@ -17,7 +17,7 @@ class SearchingCaptainWindow extends StatelessWidget {
builder: (mapPassengerController) { builder: (mapPassengerController) {
return mapPassengerController.isSearchingWindow return mapPassengerController.isSearchingWindow
? Positioned( ? Positioned(
bottom: 0, bottom: 34,
left: 0, left: 0,
right: 0, right: 0,
child: Container( child: Container(
@@ -78,7 +78,7 @@ class SearchingCaptainWindow extends StatelessWidget {
const Icon(Icons.timer_outlined, const Icon(Icons.timer_outlined,
size: 16, color: Colors.grey), size: 16, color: Colors.grey),
const SizedBox(width: 4), const SizedBox(width: 4),
_buildTimer(mapPassengerController), buildTimerForIncrease(mapPassengerController),
], ],
), ),
// const SizedBox(height: 8), // const SizedBox(height: 8),
@@ -124,7 +124,7 @@ class SearchingCaptainWindow extends StatelessWidget {
// }); // });
// } // }
Widget _buildTimer(MapPassengerController mapPassengerController) { Widget buildTimerForIncrease(MapPassengerController mapPassengerController) {
// Start timer at 0 // Start timer at 0
Timer? timer; Timer? timer;

View File

@@ -311,13 +311,14 @@ class CountryPicker extends StatelessWidget {
final List<String> countryOptions = [ final List<String> countryOptions = [
'Jordan', 'Jordan',
'USA', 'Syria',
'Egypt', 'Egypt',
'Turkey', 'Turkey',
'Saudi Arabia', 'Saudi Arabia',
'Qatar', 'Qatar',
'Bahrain', 'Bahrain',
'Kuwait', 'Kuwait',
'USA'
]; ];
CountryPicker({Key? key}) : super(key: key); CountryPicker({Key? key}) : super(key: key);