10/10/1
This commit is contained in:
@@ -35,6 +35,7 @@ class AppLink {
|
|||||||
static const String addRides = "$ride/rides/add.php";
|
static const String addRides = "$ride/rides/add.php";
|
||||||
static const String getRides = "$ride/rides/get.php";
|
static const String getRides = "$ride/rides/get.php";
|
||||||
static const String getRideStatus = "$ride/rides/getRideStatus.php";
|
static const String getRideStatus = "$ride/rides/getRideStatus.php";
|
||||||
|
static const String getRideStatusBegin = "$ride/rides/getRideStatusBegin.php";
|
||||||
static const String updateRides = "$ride/rides/update.php";
|
static const String updateRides = "$ride/rides/update.php";
|
||||||
static const String deleteRides = "$ride/rides/delete.php";
|
static const String deleteRides = "$ride/rides/delete.php";
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import 'package:ride/constant/colors.dart';
|
|||||||
import 'package:ride/constant/style.dart';
|
import 'package:ride/constant/style.dart';
|
||||||
import 'package:ride/controller/functions/crud.dart';
|
import 'package:ride/controller/functions/crud.dart';
|
||||||
import 'package:ride/controller/functions/launch.dart';
|
import 'package:ride/controller/functions/launch.dart';
|
||||||
import 'package:ride/controller/home/captin/map_dirction.dart';
|
import 'package:ride/controller/home/captin/map_driver_controller.dart';
|
||||||
import 'package:ride/controller/home/map_page_controller.dart';
|
import 'package:ride/controller/home/map_passenger_controller.dart';
|
||||||
import 'package:ride/views/home/profile/promos_passenger_page.dart';
|
import 'package:ride/views/home/profile/promos_passenger_page.dart';
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
@@ -27,13 +27,6 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
late String driverID;
|
late String driverID;
|
||||||
late String driverToken;
|
late String driverToken;
|
||||||
NotificationSettings? notificationSettings;
|
NotificationSettings? notificationSettings;
|
||||||
@override
|
|
||||||
void onInit() async {
|
|
||||||
super.onInit();
|
|
||||||
// getNotificationSettings();
|
|
||||||
// getToken();
|
|
||||||
// await getTokens();
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> getNotificationSettings() async {
|
Future<void> getNotificationSettings() async {
|
||||||
// Get the current notification settings
|
// Get the current notification settings
|
||||||
@@ -187,15 +180,22 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
);
|
);
|
||||||
} else if (message.notification!.title!.contains('Promo')) {
|
} else if (message.notification!.title!.contains('Promo')) {
|
||||||
Get.to(const PromosPassengerPage());
|
Get.to(const PromosPassengerPage());
|
||||||
|
} else if (message.notification!.title!
|
||||||
|
.contains('DriverIsGoingToPassenger')) {
|
||||||
|
Get.snackbar('Driver is Going To Passenger', '',
|
||||||
|
backgroundColor: AppColor.greenColor);
|
||||||
} else if (message.notification!.title!.contains('RideIsBegin')) {
|
} else if (message.notification!.title!.contains('RideIsBegin')) {
|
||||||
// MapDirection mapDirection = Get.find<MapDirection>();
|
// MapPassengerController mapController = Get.put(MapPassengerController());
|
||||||
// mapDirection.clearPolyline();
|
Get.snackbar('RideIsBegin', '', backgroundColor: AppColor.greenColor);
|
||||||
print('jjjjjjjjjjjjjjjjjjjjjjjjjjj');
|
// mapController.driverArrivePassenger();
|
||||||
Get.defaultDialog(
|
update();
|
||||||
title: 'The Ride is Begin'.tr,
|
} else if (message.notification!.title!.contains('isRideFinished')) {
|
||||||
backgroundColor: AppColor.greenColor,
|
MapPassengerController mapController =
|
||||||
);
|
Get.find<MapPassengerController>();
|
||||||
MapDirection().clearPolyline();
|
Get.snackbar('Ride Finished'.tr, '',
|
||||||
|
backgroundColor: AppColor.greenColor);
|
||||||
|
mapController.isRideFinished = true;
|
||||||
|
update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -305,7 +305,8 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
var passengerList = message.data['passengerList'];
|
var passengerList = message.data['passengerList'];
|
||||||
print(passengerList);
|
print(passengerList);
|
||||||
print('9999999999999my Apply Ride 999999999999999');
|
print('9999999999999my Apply Ride 999999999999999');
|
||||||
MapController mapController = Get.find<MapController>();
|
MapPassengerController mapController =
|
||||||
|
Get.find<MapPassengerController>();
|
||||||
mapController.rideConfirm = false;
|
mapController.rideConfirm = false;
|
||||||
update();
|
update();
|
||||||
print('-----------------------------rideConfirm===' +
|
print('-----------------------------rideConfirm===' +
|
||||||
@@ -382,7 +383,7 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
title: 'The Ride is Begin'.tr,
|
title: 'The Ride is Begin'.tr,
|
||||||
backgroundColor: AppColor.greenColor,
|
backgroundColor: AppColor.greenColor,
|
||||||
);
|
);
|
||||||
MapDirection().clearPolyline();
|
MapDriverController().clearPolyline();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import '../../../constant/credential.dart';
|
|||||||
import '../../../constant/links.dart';
|
import '../../../constant/links.dart';
|
||||||
import '../../functions/crud.dart';
|
import '../../functions/crud.dart';
|
||||||
|
|
||||||
class MapDirection extends GetxController {
|
class MapDriverController extends GetxController {
|
||||||
bool isLoading = true;
|
bool isLoading = true;
|
||||||
List data = [];
|
List data = [];
|
||||||
LatLngBounds? boundsData;
|
LatLngBounds? boundsData;
|
||||||
@@ -34,6 +34,7 @@ class MapDirection extends GetxController {
|
|||||||
late String direction;
|
late String direction;
|
||||||
bool isPassengerInfoWindow = false;
|
bool isPassengerInfoWindow = false;
|
||||||
bool isBtnRideBegin = false;
|
bool isBtnRideBegin = false;
|
||||||
|
bool isRideFinished = false;
|
||||||
double passengerInfoWindow = Get.height * .32;
|
double passengerInfoWindow = Get.height * .32;
|
||||||
double progress = 0;
|
double progress = 0;
|
||||||
double progressToPassenger = 0;
|
double progressToPassenger = 0;
|
||||||
@@ -93,7 +94,7 @@ class MapDirection extends GetxController {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void changeRideToBegin() {
|
void changeRideToBeginToPassenger() {
|
||||||
isRideBegin = true;
|
isRideBegin = true;
|
||||||
passengerInfoWindow = Get.height * .22;
|
passengerInfoWindow = Get.height * .22;
|
||||||
update();
|
update();
|
||||||
@@ -119,6 +120,7 @@ class MapDirection extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String stringRemainingTimeToPassenger = '';
|
||||||
void startTimerToShowDriverToPassengerDuration() async {
|
void startTimerToShowDriverToPassengerDuration() async {
|
||||||
for (int i = 0; i <= int.parse(durationToPassenger); i++) {
|
for (int i = 0; i <= int.parse(durationToPassenger); i++) {
|
||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
@@ -131,19 +133,52 @@ class MapDirection extends GetxController {
|
|||||||
}
|
}
|
||||||
print(isBtnRideBegin);
|
print(isBtnRideBegin);
|
||||||
print(remainingTimeToPassenger);
|
print(remainingTimeToPassenger);
|
||||||
|
|
||||||
|
int minutes = (remainingTimeToPassenger / 60).floor();
|
||||||
|
int seconds = remainingTimeToPassenger % 60;
|
||||||
|
stringRemainingTimeToPassenger =
|
||||||
|
'$minutes:${seconds.toString().padLeft(2, '0')}';
|
||||||
|
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
beginRideFromDriver() async {
|
void driverGoToPassenger() async {
|
||||||
changeRideToBegin();
|
changeRideToBeginToPassenger();
|
||||||
|
await CRUD().post(link: AppLink.updateRides, payload: {
|
||||||
|
'id': rideId,
|
||||||
|
'driverGoToPassengerTime': DateTime.now().toString(),
|
||||||
|
'status': 'Applied'
|
||||||
|
});
|
||||||
|
FirebaseMessagesController().sendNotificationToAnyWithoutData(
|
||||||
|
'DriverIsGoingToPassenger',
|
||||||
|
box.read(BoxName.name).toString(),
|
||||||
|
tokenPassenger);
|
||||||
|
}
|
||||||
|
|
||||||
|
void beginRideFromDriver() async {
|
||||||
|
changeRideToBeginToPassenger();
|
||||||
|
isPassengerInfoWindow = false;
|
||||||
|
isRideFinished = true;
|
||||||
|
update();
|
||||||
await CRUD().post(link: AppLink.updateRides, payload: {
|
await CRUD().post(link: AppLink.updateRides, payload: {
|
||||||
'id': rideId,
|
'id': rideId,
|
||||||
'rideTimeStart': DateTime.now().toString(),
|
'rideTimeStart': DateTime.now().toString(),
|
||||||
'status': 'Applied'
|
'status': 'Begin'
|
||||||
});
|
});
|
||||||
FirebaseMessagesController().sendNotificationToAnyWithoutData('RideIsBegin',
|
// FirebaseMessagesController().sendNotificationToAnyWithoutData(
|
||||||
box.read(BoxName.tokenDriver).toString(), tokenPassenger);
|
// 'RideIsBegin', box.read(BoxName.name).toString(), tokenPassenger);
|
||||||
|
}
|
||||||
|
|
||||||
|
void finishRideFromDriver() async {
|
||||||
|
// changeRideToBeginToPassenger();
|
||||||
|
await CRUD().post(link: AppLink.updateRides, payload: {
|
||||||
|
'id': rideId,
|
||||||
|
'rideTimeStart': DateTime.now().toString(),
|
||||||
|
'status': 'Finished'
|
||||||
|
});
|
||||||
|
FirebaseMessagesController().sendNotificationToAnyWithoutData(
|
||||||
|
'isRideFinished', box.read(BoxName.name).toString(), tokenPassenger);
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateMarker() {
|
void updateMarker() {
|
||||||
@@ -9,6 +9,7 @@ import 'package:location/location.dart';
|
|||||||
import 'package:ride/constant/box_name.dart';
|
import 'package:ride/constant/box_name.dart';
|
||||||
import 'package:ride/constant/credential.dart';
|
import 'package:ride/constant/credential.dart';
|
||||||
import 'package:ride/constant/links.dart';
|
import 'package:ride/constant/links.dart';
|
||||||
|
import 'package:ride/constant/style.dart';
|
||||||
import 'package:ride/controller/firebase/firbase_messge.dart';
|
import 'package:ride/controller/firebase/firbase_messge.dart';
|
||||||
import 'package:ride/controller/functions/crud.dart';
|
import 'package:ride/controller/functions/crud.dart';
|
||||||
import 'package:ride/controller/functions/secure_storage.dart';
|
import 'package:ride/controller/functions/secure_storage.dart';
|
||||||
@@ -17,7 +18,7 @@ import 'package:ride/views/widgets/elevated_btn.dart';
|
|||||||
import '../../main.dart';
|
import '../../main.dart';
|
||||||
import '../../models/model/locations.dart';
|
import '../../models/model/locations.dart';
|
||||||
|
|
||||||
class MapController extends GetxController {
|
class MapPassengerController extends GetxController {
|
||||||
bool isLoading = true;
|
bool isLoading = true;
|
||||||
TextEditingController placeController = TextEditingController();
|
TextEditingController placeController = TextEditingController();
|
||||||
List data = [];
|
List data = [];
|
||||||
@@ -50,7 +51,7 @@ class MapController extends GetxController {
|
|||||||
bool isCancelRidePageShown = false;
|
bool isCancelRidePageShown = false;
|
||||||
bool isCashConfirmPageShown = false;
|
bool isCashConfirmPageShown = false;
|
||||||
bool isPaymentMethodPageShown = false;
|
bool isPaymentMethodPageShown = false;
|
||||||
|
bool isRideFinished = false;
|
||||||
bool rideConfirm = false;
|
bool rideConfirm = false;
|
||||||
bool isMainBottomMenuMap = true;
|
bool isMainBottomMenuMap = true;
|
||||||
double heightBottomSheetShown = 0;
|
double heightBottomSheetShown = 0;
|
||||||
@@ -70,10 +71,16 @@ class MapController extends GetxController {
|
|||||||
double progress = 0;
|
double progress = 0;
|
||||||
double progressTimerToPassengerFromDriverAfterApplied = 0;
|
double progressTimerToPassengerFromDriverAfterApplied = 0;
|
||||||
int durationTimer = 25;
|
int durationTimer = 25;
|
||||||
|
late int durationToRide;
|
||||||
int remainingTime = 25;
|
int remainingTime = 25;
|
||||||
int remainingTimeToPassengerFromDriverAfterApplied = 60;
|
int remainingTimeToPassengerFromDriverAfterApplied = 60;
|
||||||
int timeToPassengerFromDriverAfterApplied = 0;
|
int timeToPassengerFromDriverAfterApplied = 0;
|
||||||
Timer? timerToPassengerFromDriverAfterApplied;
|
Timer? timerToPassengerFromDriverAfterApplied;
|
||||||
|
bool rideTimerBegin = false;
|
||||||
|
late double progressTimerRideBegin;
|
||||||
|
int remainingTimeTimerRideBegin = 60;
|
||||||
|
late String stringRemainingTimeRideBegin;
|
||||||
|
|
||||||
void onChangedPassengerCount(int newValue) {
|
void onChangedPassengerCount(int newValue) {
|
||||||
selectedPassengerCount = newValue;
|
selectedPassengerCount = newValue;
|
||||||
update();
|
update();
|
||||||
@@ -125,6 +132,8 @@ class MapController extends GetxController {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String stringRemainingTimeToPassenger = '';
|
||||||
|
|
||||||
void startTimerToPassengerFromDriverAfterApplied() async {
|
void startTimerToPassengerFromDriverAfterApplied() async {
|
||||||
for (int i = 0; i <= timeToPassengerFromDriverAfterApplied; i++) {
|
for (int i = 0; i <= timeToPassengerFromDriverAfterApplied; i++) {
|
||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
@@ -132,16 +141,81 @@ class MapController extends GetxController {
|
|||||||
i / timeToPassengerFromDriverAfterApplied;
|
i / timeToPassengerFromDriverAfterApplied;
|
||||||
remainingTimeToPassengerFromDriverAfterApplied =
|
remainingTimeToPassengerFromDriverAfterApplied =
|
||||||
timeToPassengerFromDriverAfterApplied - i;
|
timeToPassengerFromDriverAfterApplied - i;
|
||||||
update();
|
|
||||||
if (remainingTimeToPassengerFromDriverAfterApplied == 0) {
|
if (remainingTimeToPassengerFromDriverAfterApplied < 69) {
|
||||||
driverArrivePassenger();
|
if (rideTimerBegin == false) {
|
||||||
|
getBeginRideFromDriver();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int minutes =
|
||||||
|
(remainingTimeToPassengerFromDriverAfterApplied / 60).floor();
|
||||||
|
int seconds = remainingTimeToPassengerFromDriverAfterApplied % 60;
|
||||||
|
stringRemainingTimeToPassenger =
|
||||||
|
'$minutes:${seconds.toString().padLeft(2, '0')}';
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void rideIsBeginPassengerTimer() async {
|
||||||
|
for (int i = 0; i <= durationToRide; i++) {
|
||||||
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
|
progressTimerRideBegin = i / durationToRide;
|
||||||
|
remainingTimeTimerRideBegin = durationToRide - i;
|
||||||
|
|
||||||
|
int minutes = (remainingTimeTimerRideBegin / 60).floor();
|
||||||
|
int seconds = remainingTimeTimerRideBegin % 60;
|
||||||
|
stringRemainingTimeRideBegin =
|
||||||
|
'$minutes:${seconds.toString().padLeft(2, '0')}';
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
rideTimerBegin = false;
|
||||||
|
isRideFinished = true;
|
||||||
|
update();
|
||||||
|
print('rideTimerBegin: $rideTimerBegin');
|
||||||
|
print('isRideFinished: $isRideFinished');
|
||||||
|
|
||||||
|
Get.defaultDialog(
|
||||||
|
title: 'Ride Is Finished.'.tr,
|
||||||
|
titleStyle: AppStyle.title,
|
||||||
|
content: Text(
|
||||||
|
'Rate the Captain Please?'.tr,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
confirm: MyElevatedButton(
|
||||||
|
title: 'Ok'.tr,
|
||||||
|
onPressed: () {
|
||||||
|
Get.back(); //todo make Rate page
|
||||||
|
},
|
||||||
|
),
|
||||||
|
barrierDismissible: false,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void getBeginRideFromDriver() async {
|
||||||
|
var res = await CRUD()
|
||||||
|
.get(link: AppLink.getRideStatusBegin, payload: {'ride_id': rideId});
|
||||||
|
var decode = jsonDecode(res);
|
||||||
|
|
||||||
|
if (decode['data']['status'] == 'Begin') {
|
||||||
|
timeToPassengerFromDriverAfterApplied = 0;
|
||||||
|
remainingTime = 0;
|
||||||
|
remainingTimeToPassengerFromDriverAfterApplied = 0;
|
||||||
|
// isCancelRidePageShown = true;
|
||||||
|
rideIsBeginPassengerTimer();
|
||||||
|
// print('rideTimerBegin: $rideTimerBegin');
|
||||||
|
rideTimerBegin = true;
|
||||||
|
update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void driverArrivePassenger() {
|
void driverArrivePassenger() {
|
||||||
timeToPassengerFromDriverAfterApplied = 0;
|
timeToPassengerFromDriverAfterApplied = 0;
|
||||||
|
remainingTime = 0;
|
||||||
|
// isCancelRidePageShown = true;
|
||||||
update();
|
update();
|
||||||
|
rideIsBeginPassengerTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cancelTimerToPassengerFromDriverAfterApplied() {
|
void cancelTimerToPassengerFromDriverAfterApplied() {
|
||||||
@@ -161,7 +235,7 @@ class MapController extends GetxController {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
var rideId;
|
late String rideId;
|
||||||
late String driverToken;
|
late String driverToken;
|
||||||
int carsOrder = 0;
|
int carsOrder = 0;
|
||||||
changeConfirmRide() async {
|
changeConfirmRide() async {
|
||||||
@@ -214,6 +288,7 @@ class MapController extends GetxController {
|
|||||||
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
|
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
|
||||||
duration1.toString(),
|
duration1.toString(),
|
||||||
rideId,
|
rideId,
|
||||||
|
rideTimerBegin.toString(),
|
||||||
];
|
];
|
||||||
FirebaseMessagesController().sendNotificationToDriverMAP(
|
FirebaseMessagesController().sendNotificationToDriverMAP(
|
||||||
'Order',
|
'Order',
|
||||||
@@ -297,43 +372,48 @@ class MapController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future getCarsLocationByPassenger() async {
|
Future getCarsLocationByPassenger() async {
|
||||||
carsLocationByPassenger = [];
|
if (rideConfirm == false) {
|
||||||
LatLngBounds bounds =
|
carsLocationByPassenger = [];
|
||||||
calculateBounds(myLocation.latitude, myLocation.longitude, 8000);
|
LatLngBounds bounds =
|
||||||
print(
|
calculateBounds(myLocation.latitude, myLocation.longitude, 8000);
|
||||||
'Southwest: ${bounds.southwest.latitude}, ${bounds.southwest.longitude}');
|
print(
|
||||||
print(
|
'Southwest: ${bounds.southwest.latitude}, ${bounds.southwest.longitude}');
|
||||||
'Northeast: ${bounds.northeast.latitude}, ${bounds.northeast.longitude}');
|
print(
|
||||||
|
'Northeast: ${bounds.northeast.latitude}, ${bounds.northeast.longitude}');
|
||||||
|
|
||||||
var res =
|
var res =
|
||||||
await CRUD().get(link: AppLink.getCarsLocationByPassenger, payload: {
|
await CRUD().get(link: AppLink.getCarsLocationByPassenger, payload: {
|
||||||
'southwestLat': southwest.latitude.toString(),
|
'southwestLat': southwest.latitude.toString(),
|
||||||
'southwestLon': southwest.longitude.toString(),
|
'southwestLon': southwest.longitude.toString(),
|
||||||
'northeastLat': northeast.latitude.toString(),
|
'northeastLat': northeast.latitude.toString(),
|
||||||
'northeastLon': northeast.longitude.toString(),
|
'northeastLon': northeast.longitude.toString(),
|
||||||
});
|
});
|
||||||
if (res == 'failure') {
|
if (res == 'failure') {
|
||||||
Get.defaultDialog(
|
Get.defaultDialog(
|
||||||
title: 'No Car in your site.Sorry!',
|
title: 'No Car in your site.Sorry!',
|
||||||
middleText: '',
|
middleText: '',
|
||||||
confirm: MyElevatedButton(
|
confirm: MyElevatedButton(
|
||||||
title: 'Back',
|
title: 'Back',
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Get.back();
|
Get.back();
|
||||||
markerReloadingTimer.cancel();
|
markerReloadingTimer.cancel();
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
dataCarsLocationByPassenger = jsonDecode(res);
|
dataCarsLocationByPassenger = jsonDecode(res);
|
||||||
// print(dataCarsLocationByPassenger);
|
// print(dataCarsLocationByPassenger);
|
||||||
|
|
||||||
for (var i = 0; i < dataCarsLocationByPassenger['message'].length; i++) {
|
for (var i = 0;
|
||||||
carsLocationByPassenger.add(LatLng(
|
i < dataCarsLocationByPassenger['message'].length;
|
||||||
double.parse(dataCarsLocationByPassenger['message'][i]['latitude']),
|
i++) {
|
||||||
double.parse(
|
carsLocationByPassenger.add(LatLng(
|
||||||
dataCarsLocationByPassenger['message'][i]['longitude'])));
|
double.parse(
|
||||||
|
dataCarsLocationByPassenger['message'][i]['latitude']),
|
||||||
|
double.parse(
|
||||||
|
dataCarsLocationByPassenger['message'][i]['longitude'])));
|
||||||
|
}
|
||||||
|
|
||||||
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
update();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -690,6 +770,7 @@ class MapController extends GetxController {
|
|||||||
distanceByPassenger =
|
distanceByPassenger =
|
||||||
data['rows'][0]['elements'][0]['distance']['text'];
|
data['rows'][0]['elements'][0]['distance']['text'];
|
||||||
duration1 = data['rows'][0]['elements'][0]['duration']['value'];
|
duration1 = data['rows'][0]['elements'][0]['duration']['value'];
|
||||||
|
|
||||||
durationFromDriverToPassenger = Duration(seconds: duration1.toInt());
|
durationFromDriverToPassenger = Duration(seconds: duration1.toInt());
|
||||||
newTime1 = currentTime.add(durationFromDriverToPassenger);
|
newTime1 = currentTime.add(durationFromDriverToPassenger);
|
||||||
timeFromDriverToPassenger =
|
timeFromDriverToPassenger =
|
||||||
@@ -744,6 +825,7 @@ class MapController extends GetxController {
|
|||||||
var response = await CRUD().getGoogleApi(link: url, payload: {});
|
var response = await CRUD().getGoogleApi(link: url, payload: {});
|
||||||
data = response['routes'][0]['legs'];
|
data = response['routes'][0]['legs'];
|
||||||
print(data);
|
print(data);
|
||||||
|
durationToRide = data[0]['duration']['value'];
|
||||||
final points =
|
final points =
|
||||||
decodePolyline(response["routes"][0]["overview_polyline"]["points"]);
|
decodePolyline(response["routes"][0]["overview_polyline"]["points"]);
|
||||||
for (int i = 0; i < points.length; i++) {
|
for (int i = 0; i < points.length; i++) {
|
||||||
@@ -2,7 +2,7 @@ import 'dart:convert';
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:ride/controller/home/map_page_controller.dart';
|
import 'package:ride/controller/home/map_passenger_controller.dart';
|
||||||
|
|
||||||
import '../../constant/box_name.dart';
|
import '../../constant/box_name.dart';
|
||||||
import '../../constant/links.dart';
|
import '../../constant/links.dart';
|
||||||
@@ -17,7 +17,7 @@ class PaymentController extends GetxController {
|
|||||||
bool isPromoSheetDialogue = false;
|
bool isPromoSheetDialogue = false;
|
||||||
final formKey = GlobalKey<FormState>();
|
final formKey = GlobalKey<FormState>();
|
||||||
final promo = TextEditingController();
|
final promo = TextEditingController();
|
||||||
double totalPassenger = MapController().totalPassenger;
|
double totalPassenger = MapPassengerController().totalPassenger;
|
||||||
int? selectedAmount = 0;
|
int? selectedAmount = 0;
|
||||||
List<dynamic> totalPassengerWalletDetails = [];
|
List<dynamic> totalPassengerWalletDetails = [];
|
||||||
String passengerTotalWalletAmount = '';
|
String passengerTotalWalletAmount = '';
|
||||||
@@ -70,7 +70,7 @@ class PaymentController extends GetxController {
|
|||||||
var firstElement = decod["message"][0];
|
var firstElement = decod["message"][0];
|
||||||
totalPassenger = totalPassenger -
|
totalPassenger = totalPassenger -
|
||||||
(totalPassenger * int.parse(firstElement['amount']));
|
(totalPassenger * int.parse(firstElement['amount']));
|
||||||
MapController().promoTaken = true;
|
MapPassengerController().promoTaken = true;
|
||||||
update();
|
update();
|
||||||
print(totalPassenger);
|
print(totalPassenger);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:get_storage/get_storage.dart';
|
import 'package:get_storage/get_storage.dart';
|
||||||
import 'package:ride/constant/info.dart';
|
import 'package:ride/constant/info.dart';
|
||||||
|
import 'package:ride/controller/home/map_passenger_controller.dart';
|
||||||
import 'package:ride/views/auth/captin/login_captin.dart';
|
import 'package:ride/views/auth/captin/login_captin.dart';
|
||||||
import 'package:ride/views/auth/login_page.dart';
|
import 'package:ride/views/auth/login_page.dart';
|
||||||
import 'package:ride/views/home/Captin/home_captin.dart';
|
import 'package:ride/views/home/Captin/home_captin.dart';
|
||||||
@@ -13,6 +14,7 @@ import 'package:ride/views/home/Captin/home_captin.dart';
|
|||||||
import 'constant/box_name.dart';
|
import 'constant/box_name.dart';
|
||||||
import 'controller/firebase/firbase_messge.dart';
|
import 'controller/firebase/firbase_messge.dart';
|
||||||
import 'controller/functions/location_permission.dart';
|
import 'controller/functions/location_permission.dart';
|
||||||
|
import 'controller/home/captin/map_driver_controller.dart';
|
||||||
import 'controller/local/local_controller.dart';
|
import 'controller/local/local_controller.dart';
|
||||||
import 'controller/local/translations.dart';
|
import 'controller/local/translations.dart';
|
||||||
import 'firebase_options.dart';
|
import 'firebase_options.dart';
|
||||||
@@ -32,6 +34,7 @@ Future<void> backgroundMessageHandler(RemoteMessage message) async {
|
|||||||
void main() async {
|
void main() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
await GetStorage.init();
|
await GetStorage.init();
|
||||||
|
|
||||||
if (Platform.isAndroid || Platform.isIOS) {
|
if (Platform.isAndroid || Platform.isIOS) {
|
||||||
await Firebase.initializeApp(
|
await Firebase.initializeApp(
|
||||||
options: DefaultFirebaseOptions.currentPlatform,
|
options: DefaultFirebaseOptions.currentPlatform,
|
||||||
@@ -39,14 +42,19 @@ void main() async {
|
|||||||
}
|
}
|
||||||
|
|
||||||
await FirebaseMessagesController().requestFirebaseMessagingPermission();
|
await FirebaseMessagesController().requestFirebaseMessagingPermission();
|
||||||
// await FirebasMessagesController().getNotificationSettings();
|
|
||||||
await FirebaseMessagesController().getToken();
|
|
||||||
// await FirebasMessagesController().getTokens();
|
|
||||||
LocationPermissions().locationPermissions();
|
LocationPermissions().locationPermissions();
|
||||||
FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler);
|
FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler);
|
||||||
// if (box.read(BoxName.driverID) != null) {
|
|
||||||
// LocationController().startLocationUpdates();
|
List<Future> initializationTasks = [
|
||||||
// }
|
FirebaseMessagesController().getNotificationSettings(),
|
||||||
|
// FirebaseMessagesController().getTokens(),
|
||||||
|
FirebaseMessagesController().getToken(),
|
||||||
|
// Add more initialization tasks here
|
||||||
|
];
|
||||||
|
|
||||||
|
await Future.wait(initializationTasks);
|
||||||
|
|
||||||
runApp(const MyApp());
|
runApp(const MyApp());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,9 @@ import 'package:get/get.dart';
|
|||||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||||
import 'package:ride/constant/colors.dart';
|
import 'package:ride/constant/colors.dart';
|
||||||
import 'package:ride/constant/style.dart';
|
import 'package:ride/constant/style.dart';
|
||||||
import 'package:ride/controller/home/map_page_controller.dart';
|
import 'package:ride/controller/home/map_passenger_controller.dart';
|
||||||
import 'package:ride/views/home/map_widget.dart/cancel_raide_page.dart';
|
import 'package:ride/views/home/map_widget.dart/cancel_raide_page.dart';
|
||||||
|
import 'package:ride/views/home/map_widget.dart/ride_begin_passenger.dart';
|
||||||
import 'package:ride/views/widgets/circle_container.dart';
|
import 'package:ride/views/widgets/circle_container.dart';
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
import 'package:ride/views/widgets/mycircular.dart';
|
import 'package:ride/views/widgets/mycircular.dart';
|
||||||
@@ -30,7 +31,7 @@ class MapPage extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Get.put(MapController());
|
Get.put(MapPassengerController());
|
||||||
Get.put(MyMenuController());
|
Get.put(MyMenuController());
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
// appBar: AppBar(),
|
// appBar: AppBar(),
|
||||||
@@ -65,7 +66,7 @@ class MapPage extends StatelessWidget {
|
|||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
child: Stack(
|
child: Stack(
|
||||||
children: [
|
children: [
|
||||||
GetBuilder<MapController>(
|
GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => controller.isLoading
|
builder: (controller) => controller.isLoading
|
||||||
? const MyCircularProgressIndicator()
|
? const MyCircularProgressIndicator()
|
||||||
: GoogleMap(
|
: GoogleMap(
|
||||||
@@ -307,14 +308,15 @@ class MapPage extends StatelessWidget {
|
|||||||
const MenuIconMapPageWidget(),
|
const MenuIconMapPageWidget(),
|
||||||
buttomSheetMapPage(),
|
buttomSheetMapPage(),
|
||||||
hexagonClipper(),
|
hexagonClipper(),
|
||||||
cancelRidePage(),
|
|
||||||
const CancelRidePageShow(),
|
const CancelRidePageShow(),
|
||||||
const CashConfirmPageShown(),
|
const CashConfirmPageShown(),
|
||||||
const PaymentMethodPage(),
|
const PaymentMethodPage(),
|
||||||
timerForCancelTripFromPassenger(),
|
timerForCancelTripFromPassenger(),
|
||||||
// const DriverTimeArrivePassengerPage(),
|
// const DriverTimeArrivePassengerPage(),
|
||||||
const TimerToPassengerFromDriver(),
|
const TimerToPassengerFromDriver(),
|
||||||
// const PassengerInfoWindow()
|
const RideBeginPassenger(),
|
||||||
|
cancelRidePage(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -329,7 +331,7 @@ class CancelRidePageShow extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) =>
|
builder: (controller) =>
|
||||||
(controller.data.isNotEmpty && controller.remainingTime > 0)
|
(controller.data.isNotEmpty && controller.remainingTime > 0)
|
||||||
// ||
|
// ||
|
||||||
@@ -367,7 +369,7 @@ class PickerIconOnMap extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => Positioned(
|
builder: (controller) => Positioned(
|
||||||
bottom: 0,
|
bottom: 0,
|
||||||
top: 0,
|
top: 0,
|
||||||
|
|||||||
@@ -7,11 +7,11 @@ import 'package:ride/views/widgets/elevated_btn.dart';
|
|||||||
|
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
|
|
||||||
GetBuilder<MapController> buttomSheetMapPage() {
|
GetBuilder<MapPassengerController> buttomSheetMapPage() {
|
||||||
Get.put(PaymentController());
|
Get.put(PaymentController());
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => controller.isBottomSheetShown &&
|
builder: (controller) => controller.isBottomSheetShown &&
|
||||||
controller.rideConfirm == false
|
controller.rideConfirm == false
|
||||||
? Positioned(
|
? Positioned(
|
||||||
@@ -472,7 +472,7 @@ class Details extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => Column(
|
builder: (controller) => Column(
|
||||||
children: [
|
children: [
|
||||||
Row(
|
Row(
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:ride/constant/colors.dart';
|
import 'package:ride/constant/colors.dart';
|
||||||
import 'package:ride/constant/style.dart';
|
import 'package:ride/constant/style.dart';
|
||||||
import 'package:ride/controller/home/map_page_controller.dart';
|
import 'package:ride/controller/home/map_passenger_controller.dart';
|
||||||
|
|
||||||
import '../../widgets/elevated_btn.dart';
|
import '../../widgets/elevated_btn.dart';
|
||||||
|
|
||||||
GetBuilder<MapController> cancelRidePage() {
|
GetBuilder<MapPassengerController> cancelRidePage() {
|
||||||
Get.put(MapController());
|
Get.put(MapPassengerController());
|
||||||
final List<String> reasons = [
|
final List<String> reasons = [
|
||||||
"I don't need a ride anymore".tr,
|
"I don't need a ride anymore".tr,
|
||||||
"I was just trying the application".tr,
|
"I was just trying the application".tr,
|
||||||
@@ -16,7 +16,7 @@ GetBuilder<MapController> cancelRidePage() {
|
|||||||
"I don't have a reason".tr,
|
"I don't have a reason".tr,
|
||||||
"Other".tr,
|
"Other".tr,
|
||||||
];
|
];
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => controller.isCancelRidePageShown
|
builder: (controller) => controller.isCancelRidePageShown
|
||||||
? Positioned(
|
? Positioned(
|
||||||
left: 60,
|
left: 60,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:ride/constant/box_name.dart';
|
|||||||
import 'package:ride/constant/style.dart';
|
import 'package:ride/constant/style.dart';
|
||||||
|
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
import '../../../controller/payment/payment_controller.dart';
|
import '../../../controller/payment/payment_controller.dart';
|
||||||
import '../../../main.dart';
|
import '../../../main.dart';
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ class CashConfirmPageShown extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => Positioned(
|
builder: (controller) => Positioned(
|
||||||
right: 5,
|
right: 5,
|
||||||
bottom: 5,
|
bottom: 5,
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
|
||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
import 'hexegone_clipper.dart';
|
import 'hexegone_clipper.dart';
|
||||||
|
|
||||||
GetBuilder<MapController> hexagonClipper() {
|
GetBuilder<MapPassengerController> hexagonClipper() {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: ((controller) => controller.rideConfirm
|
builder: ((controller) => controller.rideConfirm
|
||||||
? Positioned(
|
? Positioned(
|
||||||
top: Get.height * .2,
|
top: Get.height * .2,
|
||||||
|
|||||||
@@ -4,14 +4,14 @@ import 'package:intl/intl.dart';
|
|||||||
// import 'package:intl/intl.dart';
|
// import 'package:intl/intl.dart';
|
||||||
|
|
||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
|
|
||||||
class DriverTimeArrivePassengerPage extends StatelessWidget {
|
class DriverTimeArrivePassengerPage extends StatelessWidget {
|
||||||
const DriverTimeArrivePassengerPage({super.key});
|
const DriverTimeArrivePassengerPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) {
|
builder: (controller) {
|
||||||
return controller.remainingTime == 0
|
return controller.remainingTime == 0
|
||||||
? Positioned(
|
? Positioned(
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ import 'package:ride/views/widgets/elevated_btn.dart';
|
|||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/functions/toast.dart';
|
import '../../../controller/functions/toast.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
import '../../../main.dart';
|
import '../../../main.dart';
|
||||||
|
|
||||||
GetBuilder<MapController> formSearchPlaces() {
|
GetBuilder<MapPassengerController> formSearchPlaces() {
|
||||||
// DbSql sql = DbSql.instance;
|
// DbSql sql = DbSql.instance;
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => Column(
|
builder: (controller) => Column(
|
||||||
children: [
|
children: [
|
||||||
Padding(
|
Padding(
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
|
|
||||||
GetBuilder<MapController> leftMainMenuIcons() {
|
GetBuilder<MapPassengerController> leftMainMenuIcons() {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => Positioned(
|
builder: (controller) => Positioned(
|
||||||
top: 85,
|
top: 85,
|
||||||
left: 6,
|
left: 6,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:ride/constant/box_name.dart';
|
import 'package:ride/constant/box_name.dart';
|
||||||
import 'package:ride/constant/style.dart';
|
import 'package:ride/constant/style.dart';
|
||||||
import 'package:ride/controller/home/map_page_controller.dart';
|
import 'package:ride/controller/home/map_passenger_controller.dart';
|
||||||
import 'package:ride/main.dart';
|
import 'package:ride/main.dart';
|
||||||
import 'package:ride/views/home/map_widget.dart/form_search_places.dart';
|
import 'package:ride/views/home/map_widget.dart/form_search_places.dart';
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
@@ -17,8 +17,8 @@ class MainBottomMenuMap extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Get.put(MapController());
|
Get.put(MapPassengerController());
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => Positioned(
|
builder: (controller) => Positioned(
|
||||||
bottom: 3,
|
bottom: 3,
|
||||||
left: 5,
|
left: 5,
|
||||||
@@ -143,8 +143,8 @@ class FavioratePlacesDialogu extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Get.put(MapController());
|
Get.put(MapPassengerController());
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => DefaultTextStyle(
|
builder: (controller) => DefaultTextStyle(
|
||||||
style: AppStyle.title,
|
style: AppStyle.title,
|
||||||
child: Center(
|
child: Center(
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:ride/views/home/profile/order_history.dart';
|
|||||||
import 'package:ride/views/home/profile/promos_passenger_page.dart';
|
import 'package:ride/views/home/profile/promos_passenger_page.dart';
|
||||||
|
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
import '../../notification/notification_page.dart';
|
import '../../notification/notification_page.dart';
|
||||||
import '../../widgets/icon_widget_menu.dart';
|
import '../../widgets/icon_widget_menu.dart';
|
||||||
import '../home_page.dart';
|
import '../home_page.dart';
|
||||||
@@ -20,7 +20,7 @@ class MapMenuWidget extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => Stack(children: [
|
builder: (controller) => Stack(children: [
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 60,
|
right: 60,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:get/get.dart';
|
|||||||
|
|
||||||
import '../../../constant/box_name.dart';
|
import '../../../constant/box_name.dart';
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
import '../../../main.dart';
|
import '../../../main.dart';
|
||||||
|
|
||||||
class MenuIconMapPageWidget extends StatelessWidget {
|
class MenuIconMapPageWidget extends StatelessWidget {
|
||||||
@@ -13,7 +13,7 @@ class MenuIconMapPageWidget extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => Positioned(
|
builder: (controller) => Positioned(
|
||||||
top: 30,
|
top: 30,
|
||||||
left: box.read(BoxName.lang) != 'ar' ? 5 : null,
|
left: box.read(BoxName.lang) != 'ar' ? 5 : null,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:get/get.dart';
|
|||||||
import 'package:ride/constant/box_name.dart';
|
import 'package:ride/constant/box_name.dart';
|
||||||
import 'package:ride/constant/colors.dart';
|
import 'package:ride/constant/colors.dart';
|
||||||
import 'package:ride/controller/firebase/firbase_messge.dart';
|
import 'package:ride/controller/firebase/firbase_messge.dart';
|
||||||
import 'package:ride/controller/home/captin/map_dirction.dart';
|
import 'package:ride/controller/home/captin/map_driver_controller.dart';
|
||||||
import 'package:ride/main.dart';
|
import 'package:ride/main.dart';
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
@@ -20,8 +20,8 @@ class PassengerInfoWindow extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Get.put(MapDirection());
|
Get.put(MapDriverController());
|
||||||
return GetBuilder<MapDirection>(
|
return GetBuilder<MapDriverController>(
|
||||||
builder: (controller) => controller.isPassengerInfoWindow == true
|
builder: (controller) => controller.isPassengerInfoWindow == true
|
||||||
? Stack(
|
? Stack(
|
||||||
children: [
|
children: [
|
||||||
@@ -166,9 +166,8 @@ class PassengerInfoWindow extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
Center(
|
Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
controller.remainingTimeToPassenger
|
controller
|
||||||
.toString() +
|
.stringRemainingTimeToPassenger,
|
||||||
' Seconds'.tr,
|
|
||||||
style: AppStyle.title,
|
style: AppStyle.title,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -188,47 +187,49 @@ class PassengerInfoWindow extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
: Positioned(
|
: controller.remainingTimeToShowPassengerInfoWindowFromDriver > 0 //
|
||||||
bottom: Get.height * .3,
|
? Positioned(
|
||||||
left: 15,
|
bottom: Get.height * .3,
|
||||||
child: Container(
|
left: 15,
|
||||||
decoration: AppStyle.boxDecoration,
|
child: Container(
|
||||||
child: Padding(
|
decoration: AppStyle.boxDecoration,
|
||||||
padding: const EdgeInsets.all(8.0),
|
child: Padding(
|
||||||
child: Row(
|
padding: const EdgeInsets.all(8.0),
|
||||||
children: [
|
child: Row(
|
||||||
Stack(
|
|
||||||
alignment: Alignment.center,
|
|
||||||
children: [
|
children: [
|
||||||
const CircularProgressIndicator(
|
Stack(
|
||||||
backgroundColor: AppColor.redColor,
|
alignment: Alignment.center,
|
||||||
strokeWidth: 10,
|
children: [
|
||||||
color: AppColor.redColor,
|
const CircularProgressIndicator(
|
||||||
value: 1,
|
backgroundColor: AppColor.redColor,
|
||||||
|
strokeWidth: 10,
|
||||||
|
color: AppColor.redColor,
|
||||||
|
value: 1,
|
||||||
|
),
|
||||||
|
CircularProgressIndicator(
|
||||||
|
value: controller.progress,
|
||||||
|
// Set the color based on the "isNearEnd" condition
|
||||||
|
color: AppColor.yellowColor,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'${controller.remainingTimeToShowPassengerInfoWindowFromDriver}',
|
||||||
|
style: AppStyle.number,
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
CircularProgressIndicator(
|
const SizedBox(
|
||||||
value: controller.progress,
|
width: 10,
|
||||||
// Set the color based on the "isNearEnd" condition
|
|
||||||
color: AppColor.yellowColor,
|
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'${controller.remainingTimeToShowPassengerInfoWindowFromDriver}',
|
'Please Wait If passenger want To Cancel!'.tr,
|
||||||
style: AppStyle.number,
|
style: AppStyle.title,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(
|
),
|
||||||
width: 10,
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'Please Wait If passenger want To Cancel!'.tr,
|
|
||||||
style: AppStyle.title,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
)
|
||||||
),
|
: const SizedBox(),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import 'package:ride/views/widgets/elevated_btn.dart';
|
|||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/functions/digit_obsecur_formate.dart';
|
import '../../../controller/functions/digit_obsecur_formate.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
|
|
||||||
class PaymentMethodPage extends StatelessWidget {
|
class PaymentMethodPage extends StatelessWidget {
|
||||||
const PaymentMethodPage({
|
const PaymentMethodPage({
|
||||||
@@ -18,7 +18,7 @@ class PaymentMethodPage extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => Positioned(
|
builder: (controller) => Positioned(
|
||||||
right: 5,
|
right: 5,
|
||||||
bottom: 5,
|
bottom: 5,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:ride/constant/table_names.dart';
|
|||||||
|
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
import '../../../main.dart';
|
import '../../../main.dart';
|
||||||
import '../../widgets/elevated_btn.dart';
|
import '../../widgets/elevated_btn.dart';
|
||||||
import 'form_search_places.dart';
|
import 'form_search_places.dart';
|
||||||
@@ -13,11 +13,11 @@ class PickerAnimtionContainerFormPlaces extends StatelessWidget {
|
|||||||
PickerAnimtionContainerFormPlaces({
|
PickerAnimtionContainerFormPlaces({
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
final controller = MapController();
|
final controller = MapPassengerController();
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
// DbSql sql = DbSql.instance;
|
// DbSql sql = DbSql.instance;
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) => Positioned(
|
builder: (controller) => Positioned(
|
||||||
bottom: 0,
|
bottom: 0,
|
||||||
left: 0,
|
left: 0,
|
||||||
|
|||||||
96
lib/views/home/map_widget.dart/ride_begin_passenger.dart
Normal file
96
lib/views/home/map_widget.dart/ride_begin_passenger.dart
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:ride/constant/links.dart';
|
||||||
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
|
import '../../../constant/box_name.dart';
|
||||||
|
import '../../../constant/colors.dart';
|
||||||
|
import '../../../constant/style.dart';
|
||||||
|
import '../../../controller/firebase/firbase_messge.dart';
|
||||||
|
import '../../../controller/functions/crud.dart';
|
||||||
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
|
import '../../../main.dart';
|
||||||
|
|
||||||
|
class RideBeginPassenger extends StatelessWidget {
|
||||||
|
const RideBeginPassenger({
|
||||||
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return GetBuilder<MapPassengerController>(builder: (controller) {
|
||||||
|
if (controller.rideTimerBegin) {
|
||||||
|
return Positioned(
|
||||||
|
left: 10,
|
||||||
|
right: 10,
|
||||||
|
bottom: 4,
|
||||||
|
child: Container(
|
||||||
|
decoration: AppStyle.boxDecoration,
|
||||||
|
height: 200,
|
||||||
|
// width: 100,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'You will arrive to your destination after '.tr,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
Stack(
|
||||||
|
children: [
|
||||||
|
LinearProgressIndicator(
|
||||||
|
backgroundColor: AppColor.accentColor,
|
||||||
|
color: controller.remainingTimeTimerRideBegin < 60
|
||||||
|
? AppColor.redColor
|
||||||
|
: AppColor.greenColor,
|
||||||
|
minHeight: 50,
|
||||||
|
borderRadius: BorderRadius.circular(15),
|
||||||
|
value: controller.progressTimerRideBegin.toDouble(),
|
||||||
|
),
|
||||||
|
Center(
|
||||||
|
child: Text(
|
||||||
|
controller.stringRemainingTimeRideBegin,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
controller.remainingTimeTimerRideBegin < 5
|
||||||
|
? MyElevatedButton(
|
||||||
|
title:
|
||||||
|
'If you in destination Now. Press finish The Ride',
|
||||||
|
onPressed: () async {
|
||||||
|
//todo finish the trip and rest all counter ,start new counter of the trip time
|
||||||
|
|
||||||
|
// await CRUD()
|
||||||
|
// .post(link: AppLink.updateRides, payload: {
|
||||||
|
// 'id': controller.rideId,
|
||||||
|
// 'rideTimeStart': DateTime.now().toString(),
|
||||||
|
// 'status': 'Applied'
|
||||||
|
// });
|
||||||
|
// controller.driverArrivePassenger();
|
||||||
|
// // Send notification to driver to alert him that trip is begin
|
||||||
|
// FirebaseMessagesController()
|
||||||
|
// .sendNotificationToAnyWithoutData(
|
||||||
|
// 'BeginTrip',
|
||||||
|
// box.read(BoxName.name).toString(),
|
||||||
|
// controller.driverToken.toString(),
|
||||||
|
// );
|
||||||
|
// print(controller.driverToken.toString());
|
||||||
|
// Get.defaultDialog(
|
||||||
|
// title: 'The Ride is Begin'.tr,
|
||||||
|
// backgroundColor: AppColor.greenColor,
|
||||||
|
// );
|
||||||
|
})
|
||||||
|
: const SizedBox()
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return const SizedBox();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,10 +3,10 @@ import 'package:get/get.dart';
|
|||||||
import 'package:ride/views/home/map_page.dart';
|
import 'package:ride/views/home/map_page.dart';
|
||||||
|
|
||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
|
|
||||||
GetBuilder<MapController> timerForCancelTripFromPassenger() {
|
GetBuilder<MapPassengerController> timerForCancelTripFromPassenger() {
|
||||||
return GetBuilder<MapController>(
|
return GetBuilder<MapPassengerController>(
|
||||||
builder: (controller) {
|
builder: (controller) {
|
||||||
final isNearEnd =
|
final isNearEnd =
|
||||||
controller.remainingTime <= 5; // Define a threshold for "near end"
|
controller.remainingTime <= 5; // Define a threshold for "near end"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import '../../../constant/colors.dart';
|
|||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/firebase/firbase_messge.dart';
|
import '../../../controller/firebase/firbase_messge.dart';
|
||||||
import '../../../controller/functions/crud.dart';
|
import '../../../controller/functions/crud.dart';
|
||||||
import '../../../controller/home/map_page_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
import '../../../main.dart';
|
import '../../../main.dart';
|
||||||
|
|
||||||
class TimerToPassengerFromDriver extends StatelessWidget {
|
class TimerToPassengerFromDriver extends StatelessWidget {
|
||||||
@@ -18,7 +18,7 @@ class TimerToPassengerFromDriver extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GetBuilder<MapController>(builder: (controller) {
|
return GetBuilder<MapPassengerController>(builder: (controller) {
|
||||||
if (controller.remainingTime == 0 &&
|
if (controller.remainingTime == 0 &&
|
||||||
controller.timeToPassengerFromDriverAfterApplied > 0) {
|
controller.timeToPassengerFromDriverAfterApplied > 0) {
|
||||||
return Positioned(
|
return Positioned(
|
||||||
@@ -55,9 +55,7 @@ class TimerToPassengerFromDriver extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
Center(
|
Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
controller
|
controller.stringRemainingTimeToPassenger,
|
||||||
.remainingTimeToPassengerFromDriverAfterApplied
|
|
||||||
.toString(),
|
|
||||||
style: AppStyle.title,
|
style: AppStyle.title,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.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 'package:ride/controller/home/captin/map_dirction.dart';
|
import 'package:ride/controller/home/captin/map_driver_controller.dart';
|
||||||
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
import 'package:ride/views/widgets/my_scafold.dart';
|
import 'package:ride/views/widgets/my_scafold.dart';
|
||||||
|
|
||||||
import '../../constant/colors.dart';
|
import '../../constant/colors.dart';
|
||||||
@@ -16,7 +17,7 @@ class PassengerLocationDirection extends StatelessWidget {
|
|||||||
final LocationController locationController = Get.put(LocationController());
|
final LocationController locationController = Get.put(LocationController());
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Get.put(MapDirection());
|
Get.put(MapDriverController());
|
||||||
|
|
||||||
// mapDirection.getMap();//todo get this argument
|
// mapDirection.getMap();//todo get this argument
|
||||||
return MyScafolld(
|
return MyScafolld(
|
||||||
@@ -24,7 +25,7 @@ class PassengerLocationDirection extends StatelessWidget {
|
|||||||
body: [
|
body: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: GetBuilder<MapDirection>(
|
child: GetBuilder<MapDriverController>(
|
||||||
builder: (controller) => GoogleMap(
|
builder: (controller) => GoogleMap(
|
||||||
onMapCreated: controller.onMapCreated,
|
onMapCreated: controller.onMapCreated,
|
||||||
initialCameraPosition: CameraPosition(
|
initialCameraPosition: CameraPosition(
|
||||||
@@ -69,6 +70,50 @@ class PassengerLocationDirection extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
const PassengerInfoWindow(),
|
const PassengerInfoWindow(),
|
||||||
|
GetBuilder<MapDriverController>(
|
||||||
|
builder: (mapDriverController) => mapDriverController
|
||||||
|
.isRideFinished
|
||||||
|
? Positioned(
|
||||||
|
left: 5,
|
||||||
|
top: 5,
|
||||||
|
right: 5,
|
||||||
|
child: Container(
|
||||||
|
decoration: AppStyle.boxDecoration,
|
||||||
|
height: 60,
|
||||||
|
width: 200,
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
children: [
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
const Icon(Icons.social_distance),
|
||||||
|
Text(
|
||||||
|
mapDriverController.distance.toString() +
|
||||||
|
' ' +
|
||||||
|
'KM'.tr,
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
MyElevatedButton(
|
||||||
|
title: 'End Ride'.tr,
|
||||||
|
onPressed: () {},
|
||||||
|
kolor: AppColor.redColor,
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
const Icon(Icons.timelapse),
|
||||||
|
Text(
|
||||||
|
mapDriverController.duration.toString() +
|
||||||
|
' ' +
|
||||||
|
'Minute'.tr,
|
||||||
|
style: AppStyle.title),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
))
|
||||||
|
: const SizedBox())
|
||||||
],
|
],
|
||||||
isleading: true);
|
isleading: true);
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@ import 'package:get/get.dart';
|
|||||||
import 'package:ride/constant/box_name.dart';
|
import 'package:ride/constant/box_name.dart';
|
||||||
import 'package:ride/controller/firebase/firbase_messge.dart';
|
import 'package:ride/controller/firebase/firbase_messge.dart';
|
||||||
import 'package:ride/main.dart';
|
import 'package:ride/main.dart';
|
||||||
import 'package:ride/views/orderCaptin/passenger_location_dirction.dart';
|
import 'package:ride/views/orderCaptin/driver_map_page.dart';
|
||||||
import 'package:ride/views/widgets/my_scafold.dart';
|
import 'package:ride/views/widgets/my_scafold.dart';
|
||||||
|
|
||||||
import '../../constant/colors.dart';
|
import '../../constant/colors.dart';
|
||||||
|
|||||||
Reference in New Issue
Block a user