diff --git a/android/app/build.gradle b/android/app/build.gradle
index 0c3a222..1d4f4d2 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -53,10 +53,10 @@ android {
applicationId "com.mobileapp.store.ride"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
- minSdkVersion 23
+ minSdkVersion 26
targetSdkVersion flutter.targetSdkVersion
- versionCode 15
- versionName '1.3.9'
+ versionCode 16
+ versionName '1.4.0'
// manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml']
}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 74c3fb0..7f1b9a0 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -17,6 +17,7 @@
+
+ default_channel
AIzaSyCyfwRXTwSTLOFQSQgN5p7QZgGJVZnEKq0
\ No newline at end of file
diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart
index 2acbea8..f9da2e0 100644
--- a/lib/controller/firebase/firbase_messge.dart
+++ b/lib/controller/firebase/firbase_messge.dart
@@ -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': {
'title': title,
'body': body,
- 'sound': 'assets/notify.mp3'
+ 'sound': Platform.isAndroid
+ ? 'android/app/src/main/res/raw/tone1.mp3'
+ : 'tone2.wav'
},
'priority': 'high',
'data': {
@@ -259,7 +273,9 @@ class FirebaseMessagesController extends GetxController {
'notification': {
'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': {
'title': title,
'body': body,
- 'sound': 'assets/notify.mp3'
+ 'sound': Platform.isAndroid ? 'tone2' : 'tone2.wav'
},
'data': {
'click_action': 'FLUTTER_NOTIFICATION_CLICK',
@@ -335,7 +351,10 @@ class FirebaseMessagesController extends GetxController {
'notification': {
'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,
diff --git a/lib/controller/home/captin/map_driver_controller.dart b/lib/controller/home/captin/map_driver_controller.dart
index 57b106e..c74d3e9 100644
--- a/lib/controller/home/captin/map_driver_controller.dart
+++ b/lib/controller/home/captin/map_driver_controller.dart
@@ -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 = [];
+ String canelString = 'yet';
void onMapCreated(GoogleMapController controller) async {
myLocation = Get.find().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());
+ },
+ ),
+ );
}
}
diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart
index 0a22ef7..1745f2c 100644
--- a/lib/controller/home/map_passenger_controller.dart
+++ b/lib/controller/home/map_passenger_controller.dart
@@ -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();
}
}
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 8724e6e..19683e0 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
@@ -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,
diff --git a/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart b/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart
index 2601f0d..3393630 100644
--- a/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart
+++ b/lib/views/home/map_widget.dart/main_bottom_Menu_map.dart
@@ -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,
+ ),
+ ),
],
)
],