This commit is contained in:
Hamza-Ayed
2023-10-10 02:54:11 +03:00
parent 54e948e93b
commit b61ce6ab2e
25 changed files with 437 additions and 168 deletions

View File

@@ -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";

View File

@@ -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();
} }
}); });
} }

View File

@@ -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() {

View File

@@ -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++) {

View File

@@ -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);
} }

View File

@@ -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());
} }

View File

@@ -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,

View File

@@ -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(

View File

@@ -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,

View File

@@ -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,

View File

@@ -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,

View File

@@ -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(

View File

@@ -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(

View File

@@ -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,

View File

@@ -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(

View File

@@ -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,

View File

@@ -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,

View File

@@ -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(),
),
); );
} }
} }

View File

@@ -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,

View File

@@ -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,

View 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();
}
});
}
}

View File

@@ -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"

View File

@@ -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,
), ),
) )

View File

@@ -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);
} }

View File

@@ -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';