10/14/1
This commit is contained in:
@@ -2,10 +2,11 @@ class BoxName {
|
|||||||
static const String driverID = "driverID";
|
static const String driverID = "driverID";
|
||||||
|
|
||||||
static const String lang = "lang";
|
static const String lang = "lang";
|
||||||
|
static const String statusDriverLocation = "statusDriverLocation";
|
||||||
static const String password = "password";
|
static const String password = "password";
|
||||||
static const String passwordDriver = "passwordDriver";
|
static const String passwordDriver = "passwordDriver";
|
||||||
static const String agreeTerms = "agreeTerms";
|
static const String agreeTerms = "agreeTerms";
|
||||||
static const String pasengerID = "pasengerID";
|
static const String passengerID = "pasengerID";
|
||||||
static const String phone = "phone";
|
static const String phone = "phone";
|
||||||
static const String phoneDriver = "phoneDriver";
|
static const String phoneDriver = "phoneDriver";
|
||||||
static const String name = "name";
|
static const String name = "name";
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ class LoginController extends GetxController {
|
|||||||
if (jsonDecoeded['status'] == 'success') {
|
if (jsonDecoeded['status'] == 'success') {
|
||||||
print(jsonDecoeded['data'][0]['verified']);
|
print(jsonDecoeded['data'][0]['verified']);
|
||||||
if (jsonDecoeded['data'][0]['verified'] == 1) {
|
if (jsonDecoeded['data'][0]['verified'] == 1) {
|
||||||
box.write(BoxName.pasengerID, jsonDecoeded['data'][0]['id']);
|
box.write(BoxName.passengerID, jsonDecoeded['data'][0]['id']);
|
||||||
box.write(BoxName.email, jsonDecoeded['data'][0]['email']);
|
box.write(BoxName.email, jsonDecoeded['data'][0]['email']);
|
||||||
box.write(BoxName.name, jsonDecoeded['data'][0]['first_name']);
|
box.write(BoxName.name, jsonDecoeded['data'][0]['first_name']);
|
||||||
box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']);
|
box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']);
|
||||||
@@ -59,11 +59,11 @@ class LoginController extends GetxController {
|
|||||||
Get.offAll(() => MapPage());
|
Get.offAll(() => MapPage());
|
||||||
isloading = false;
|
isloading = false;
|
||||||
update();
|
update();
|
||||||
print(box.read(BoxName.pasengerID).toString());
|
print(box.read(BoxName.passengerID).toString());
|
||||||
print(box.read(BoxName.tokenFCM));
|
print(box.read(BoxName.tokenFCM));
|
||||||
await CRUD().post(link: AppLink.addTokens, payload: {
|
await CRUD().post(link: AppLink.addTokens, payload: {
|
||||||
'token': box.read(BoxName.tokenFCM),
|
'token': box.read(BoxName.tokenFCM),
|
||||||
'passengerID': box.read(BoxName.pasengerID).toString()
|
'passengerID': box.read(BoxName.passengerID).toString()
|
||||||
}).then((value) => print('cccc'));
|
}).then((value) => print('cccc'));
|
||||||
} else {
|
} else {
|
||||||
isloading = false;
|
isloading = false;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class TokenController extends GetxController {
|
|||||||
},
|
},
|
||||||
body: {
|
body: {
|
||||||
'token': box.read(BoxName.tokenFCM.toString()),
|
'token': box.read(BoxName.tokenFCM.toString()),
|
||||||
'passengerID': box.read(BoxName.pasengerID).toString()
|
'passengerID': box.read(BoxName.passengerID).toString()
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import 'package:location/location.dart';
|
|||||||
import 'package:ride/constant/box_name.dart';
|
import 'package:ride/constant/box_name.dart';
|
||||||
import 'package:ride/constant/links.dart';
|
import 'package:ride/constant/links.dart';
|
||||||
import 'package:ride/controller/functions/crud.dart';
|
import 'package:ride/controller/functions/crud.dart';
|
||||||
|
import 'package:ride/controller/home/captin/map_driver_controller.dart';
|
||||||
import 'package:ride/main.dart';
|
import 'package:ride/main.dart';
|
||||||
|
|
||||||
// LocationController.dart
|
// LocationController.dart
|
||||||
@@ -26,13 +27,19 @@ class LocationController extends GetxController {
|
|||||||
|
|
||||||
void startLocationUpdates() async {
|
void startLocationUpdates() async {
|
||||||
_locationTimer = Timer.periodic(const Duration(seconds: 20), (timer) async {
|
_locationTimer = Timer.periodic(const Duration(seconds: 20), (timer) async {
|
||||||
|
try {
|
||||||
await getLocation();
|
await getLocation();
|
||||||
|
|
||||||
await CRUD().post(link: AppLink.addCarsLocationByPassenger, payload: {
|
await CRUD().post(link: AppLink.addCarsLocationByPassenger, payload: {
|
||||||
'driver_id': box.read(BoxName.driverID).toString(),
|
'driver_id': box.read(BoxName.driverID).toString(),
|
||||||
'latitude': myLocation.latitude.toString(),
|
'latitude': myLocation.latitude.toString(),
|
||||||
'longitude': myLocation.longitude.toString(),
|
'longitude': myLocation.longitude.toString(),
|
||||||
|
'status': box.read(BoxName.statusDriverLocation).toString()
|
||||||
});
|
});
|
||||||
|
} catch (e) {
|
||||||
|
// Handle the error gracefully
|
||||||
|
print('Error during location updates: $e');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class LogOut {
|
|||||||
box.remove(BoxName.email);
|
box.remove(BoxName.email);
|
||||||
box.remove(BoxName.lang);
|
box.remove(BoxName.lang);
|
||||||
box.remove(BoxName.name);
|
box.remove(BoxName.name);
|
||||||
box.remove(BoxName.pasengerID);
|
box.remove(BoxName.passengerID);
|
||||||
box.remove(BoxName.phone);
|
box.remove(BoxName.phone);
|
||||||
box.remove(BoxName.tokenFCM);
|
box.remove(BoxName.tokenFCM);
|
||||||
box.remove(BoxName.tokens);
|
box.remove(BoxName.tokens);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import '../../../constant/links.dart';
|
|||||||
import '../../../main.dart';
|
import '../../../main.dart';
|
||||||
import '../../functions/crud.dart';
|
import '../../functions/crud.dart';
|
||||||
import '../../functions/location_controller.dart';
|
import '../../functions/location_controller.dart';
|
||||||
|
import 'map_driver_controller.dart';
|
||||||
|
|
||||||
class HomeCaptainController extends GetxController {
|
class HomeCaptainController extends GetxController {
|
||||||
bool isActive = false;
|
bool isActive = false;
|
||||||
@@ -17,7 +18,6 @@ class HomeCaptainController extends GetxController {
|
|||||||
|
|
||||||
void onButtonSelected() {
|
void onButtonSelected() {
|
||||||
isActive = !isActive;
|
isActive = !isActive;
|
||||||
|
|
||||||
if (isActive) {
|
if (isActive) {
|
||||||
locationController.startLocationUpdates();
|
locationController.startLocationUpdates();
|
||||||
activeStartTime = DateTime.now();
|
activeStartTime = DateTime.now();
|
||||||
@@ -58,6 +58,7 @@ class HomeCaptainController extends GetxController {
|
|||||||
'token': box.read(BoxName.tokenDriver),
|
'token': box.read(BoxName.tokenDriver),
|
||||||
'captain_id': box.read(BoxName.driverID).toString()
|
'captain_id': box.read(BoxName.driverID).toString()
|
||||||
}).then((value) => print('cccc'));
|
}).then((value) => print('cccc'));
|
||||||
|
box.write(BoxName.statusDriverLocation, 'off');
|
||||||
super.onInit();
|
super.onInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import 'package:ride/views/Rate/rate_passenger.dart';
|
|||||||
|
|
||||||
import '../../../constant/credential.dart';
|
import '../../../constant/credential.dart';
|
||||||
import '../../../constant/links.dart';
|
import '../../../constant/links.dart';
|
||||||
import '../../../views/home/Captin/home_captin.dart';
|
|
||||||
import '../../functions/crud.dart';
|
import '../../functions/crud.dart';
|
||||||
|
|
||||||
class MapDriverController extends GetxController {
|
class MapDriverController extends GetxController {
|
||||||
@@ -36,6 +35,7 @@ class MapDriverController extends GetxController {
|
|||||||
late String durationToPassenger;
|
late String durationToPassenger;
|
||||||
late String walletChecked;
|
late String walletChecked;
|
||||||
late String direction;
|
late String direction;
|
||||||
|
late String status;
|
||||||
bool isPassengerInfoWindow = false;
|
bool isPassengerInfoWindow = false;
|
||||||
bool isBtnRideBegin = false;
|
bool isBtnRideBegin = false;
|
||||||
bool isRideFinished = false;
|
bool isRideFinished = false;
|
||||||
@@ -51,22 +51,39 @@ class MapDriverController extends GetxController {
|
|||||||
GoogleMapController? mapController;
|
GoogleMapController? mapController;
|
||||||
late LatLng myLocation;
|
late LatLng myLocation;
|
||||||
|
|
||||||
|
late Timer timer;
|
||||||
|
|
||||||
void onMapCreated(GoogleMapController controller) {
|
void onMapCreated(GoogleMapController controller) {
|
||||||
LocationController locationController = Get.find<LocationController>();
|
LocationController locationController = Get.find<LocationController>();
|
||||||
myLocation = locationController.myLocation;
|
myLocation = locationController.myLocation;
|
||||||
mapController = controller;
|
mapController = controller;
|
||||||
controller.getVisibleRegion();
|
controller.getVisibleRegion();
|
||||||
controller.animateCamera(
|
controller.animateCamera(
|
||||||
CameraUpdate.newLatLng(myLocation),
|
CameraUpdate.newLatLngZoom(myLocation, 10),
|
||||||
);
|
);
|
||||||
update();
|
update();
|
||||||
|
|
||||||
// Set up a timer or interval to trigger the marker update every 3 seconds.
|
// Set up a timer or interval to trigger the marker update every 3 seconds.
|
||||||
Timer.periodic(const Duration(seconds: 3), (_) {
|
timer = Timer.periodic(const Duration(seconds: 3), (_) {
|
||||||
updateMarker();
|
updateMarker();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void changeStatusDriver() {
|
||||||
|
status = 'On';
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
takeSnapMap() {
|
||||||
|
mapController!.takeSnapshot();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
mapController!.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
void checkIsDriverNearPassenger() async {
|
void checkIsDriverNearPassenger() async {
|
||||||
if (isDriverNearPassengerStart) {
|
if (isDriverNearPassengerStart) {
|
||||||
Timer.periodic(const Duration(seconds: 3), (timer) {
|
Timer.periodic(const Duration(seconds: 3), (timer) {
|
||||||
@@ -78,17 +95,6 @@ class MapDriverController extends GetxController {
|
|||||||
// Replace "passengerLat" and "passengerLng" with the actual passenger's location
|
// Replace "passengerLat" and "passengerLng" with the actual passenger's location
|
||||||
String passengerLat = passengerLocation; // Set the passenger's latitude
|
String passengerLat = passengerLocation; // Set the passenger's latitude
|
||||||
String passengerLng = ""; // Set the passenger's longitude
|
String passengerLng = ""; // Set the passenger's longitude
|
||||||
|
|
||||||
// double distance = calculateDistance(
|
|
||||||
// double.parse(driverLat),
|
|
||||||
// double.parse(driverLng),
|
|
||||||
// double.parse(passengerLat),
|
|
||||||
// double.parse(passengerLng),
|
|
||||||
// );
|
|
||||||
|
|
||||||
// if (distance < 50) {
|
|
||||||
// print("Distance to passenger: $distance meters");
|
|
||||||
// }
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -166,6 +172,7 @@ class MapDriverController extends GetxController {
|
|||||||
isPassengerInfoWindow = false;
|
isPassengerInfoWindow = false;
|
||||||
isRideStarted = true;
|
isRideStarted = true;
|
||||||
isRideFinished = false;
|
isRideFinished = false;
|
||||||
|
box.write(BoxName.statusDriverLocation, 'on');
|
||||||
update();
|
update();
|
||||||
await CRUD().post(link: AppLink.updateRides, payload: {
|
await CRUD().post(link: AppLink.updateRides, payload: {
|
||||||
'id': rideId,
|
'id': rideId,
|
||||||
@@ -179,6 +186,7 @@ class MapDriverController extends GetxController {
|
|||||||
void finishRideFromDriver() async {
|
void finishRideFromDriver() async {
|
||||||
isRideFinished = true;
|
isRideFinished = true;
|
||||||
isRideStarted = false;
|
isRideStarted = false;
|
||||||
|
box.write(BoxName.statusDriverLocation, 'off');
|
||||||
// changeRideToBeginToPassenger();
|
// changeRideToBeginToPassenger();
|
||||||
await CRUD().post(link: AppLink.updateRides, payload: {
|
await CRUD().post(link: AppLink.updateRides, payload: {
|
||||||
'id': rideId,
|
'id': rideId,
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class MapPassengerController extends GetxController {
|
|||||||
bool isMainBottomMenuMap = true;
|
bool isMainBottomMenuMap = true;
|
||||||
double heightBottomSheetShown = 0;
|
double heightBottomSheetShown = 0;
|
||||||
double cashConfirmPageShown = 250;
|
double cashConfirmPageShown = 250;
|
||||||
|
late String driverId;
|
||||||
double widthMapTypeAndTraffic = 50;
|
double widthMapTypeAndTraffic = 50;
|
||||||
double paymentPageShown = Get.height * .6;
|
double paymentPageShown = Get.height * .6;
|
||||||
late LatLng southwest;
|
late LatLng southwest;
|
||||||
@@ -77,7 +77,7 @@ class MapPassengerController extends GetxController {
|
|||||||
int timeToPassengerFromDriverAfterApplied = 0;
|
int timeToPassengerFromDriverAfterApplied = 0;
|
||||||
Timer? timerToPassengerFromDriverAfterApplied;
|
Timer? timerToPassengerFromDriverAfterApplied;
|
||||||
bool rideTimerBegin = false;
|
bool rideTimerBegin = false;
|
||||||
late double progressTimerRideBegin;
|
double progressTimerRideBegin = 0;
|
||||||
int remainingTimeTimerRideBegin = 60;
|
int remainingTimeTimerRideBegin = 60;
|
||||||
late String stringRemainingTimeRideBegin;
|
late String stringRemainingTimeRideBegin;
|
||||||
|
|
||||||
@@ -175,23 +175,10 @@ class MapPassengerController extends GetxController {
|
|||||||
update();
|
update();
|
||||||
print('rideTimerBegin: $rideTimerBegin');
|
print('rideTimerBegin: $rideTimerBegin');
|
||||||
print('isRideFinished: $isRideFinished');
|
print('isRideFinished: $isRideFinished');
|
||||||
Get.to(() => RateCaptain());
|
Get.to(() => RateCaptainFromPassenger(), arguments: {
|
||||||
// Get.defaultDialog(
|
'driverId': driverId.toString(),
|
||||||
// title: 'Ride Is Finished.'.tr,
|
'rideId': rideId.toString(),
|
||||||
// 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 {
|
void getBeginRideFromDriver() async {
|
||||||
@@ -260,7 +247,7 @@ class MapPassengerController extends GetxController {
|
|||||||
"time": DateTime.now().toString(),
|
"time": DateTime.now().toString(),
|
||||||
"endtime": durationToAdd.toString(),
|
"endtime": durationToAdd.toString(),
|
||||||
"price": totalPassenger.toString(),
|
"price": totalPassenger.toString(),
|
||||||
"passenger_id": box.read(BoxName.pasengerID).toString(),
|
"passenger_id": box.read(BoxName.passengerID).toString(),
|
||||||
"driver_id": dataCarsLocationByPassenger['message'][carsOrder]
|
"driver_id": dataCarsLocationByPassenger['message'][carsOrder]
|
||||||
['driver_id']
|
['driver_id']
|
||||||
.toString(),
|
.toString(),
|
||||||
@@ -280,7 +267,7 @@ class MapPassengerController extends GetxController {
|
|||||||
duration.toString(),
|
duration.toString(),
|
||||||
distance.toString(),
|
distance.toString(),
|
||||||
dataCarsLocationByPassenger['message'][carsOrder]['id'].toString(),
|
dataCarsLocationByPassenger['message'][carsOrder]['id'].toString(),
|
||||||
box.read(BoxName.pasengerID).toString(),
|
box.read(BoxName.passengerID).toString(),
|
||||||
box.read(BoxName.name).toString(),
|
box.read(BoxName.name).toString(),
|
||||||
box.read(BoxName.tokenFCM).toString(),
|
box.read(BoxName.tokenFCM).toString(),
|
||||||
box.read(BoxName.phone).toString(),
|
box.read(BoxName.phone).toString(),
|
||||||
@@ -405,7 +392,10 @@ class MapPassengerController extends GetxController {
|
|||||||
} else {
|
} else {
|
||||||
dataCarsLocationByPassenger = jsonDecode(res);
|
dataCarsLocationByPassenger = jsonDecode(res);
|
||||||
// print(dataCarsLocationByPassenger);
|
// print(dataCarsLocationByPassenger);
|
||||||
|
driverId = dataCarsLocationByPassenger['message'][carsOrder]
|
||||||
|
['driver_id']
|
||||||
|
.toString();
|
||||||
|
// print('driverId==============$driverId');
|
||||||
for (var i = 0;
|
for (var i = 0;
|
||||||
i < dataCarsLocationByPassenger['message'].length;
|
i < dataCarsLocationByPassenger['message'].length;
|
||||||
i++) {
|
i++) {
|
||||||
@@ -444,14 +434,14 @@ class MapPassengerController extends GetxController {
|
|||||||
|
|
||||||
Future runEvery30SecondsUntilConditionMet() async {
|
Future runEvery30SecondsUntilConditionMet() async {
|
||||||
// Calculate the duration of the trip in minutes.
|
// Calculate the duration of the trip in minutes.
|
||||||
double tripDurationInMinutes = duration1 / 60;
|
double tripDurationInMinutes = duration1 / 30;
|
||||||
int loopCount = tripDurationInMinutes.ceil();
|
int loopCount = tripDurationInMinutes.ceil();
|
||||||
// If the trip duration is less than or equal to 50 minutes, then break the loop.
|
// If the trip duration is less than or equal to 50 minutes, then break the loop.
|
||||||
for (var i = 0; i < loopCount; i++) {
|
for (var i = 0; i < loopCount; i++) {
|
||||||
// Wait for 50 seconds.
|
// Wait for 50 seconds.
|
||||||
await Future.delayed(const Duration(
|
await Future.delayed(const Duration(
|
||||||
seconds:
|
seconds:
|
||||||
30)); // Run the `getDriverCarsLocationToPassengerAfterApplied()` function.
|
31)); // Run the `getDriverCarsLocationToPassengerAfterApplied()` function.
|
||||||
await getDriverCarsLocationToPassengerAfterApplied();
|
await getDriverCarsLocationToPassengerAfterApplied();
|
||||||
reloadMarkerDriverCarsLocationToPassengerAfterApplied();
|
reloadMarkerDriverCarsLocationToPassengerAfterApplied();
|
||||||
}
|
}
|
||||||
@@ -483,6 +473,16 @@ class MapPassengerController extends GetxController {
|
|||||||
} // Update the map with the new markers
|
} // Update the map with the new markers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
restCounter() {
|
||||||
|
clearPlaces();
|
||||||
|
clearPolyline();
|
||||||
|
data = [];
|
||||||
|
rideConfirm = false;
|
||||||
|
shouldFetch = false;
|
||||||
|
timeToPassengerFromDriverAfterApplied = 0;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
Future cancelRide() async {
|
Future cancelRide() async {
|
||||||
print(rideConfirm);
|
print(rideConfirm);
|
||||||
|
|
||||||
@@ -511,7 +511,7 @@ class MapPassengerController extends GetxController {
|
|||||||
.driverID
|
.driverID
|
||||||
.toString(), // Convert to String
|
.toString(), // Convert to String
|
||||||
"passengerID":
|
"passengerID":
|
||||||
box.read(BoxName.pasengerID).toString(), // Convert to String
|
box.read(BoxName.passengerID).toString(), // Convert to String
|
||||||
"rideID": rideId.toString(), // Convert to String
|
"rideID": rideId.toString(), // Convert to String
|
||||||
"note": cancelNote
|
"note": cancelNote
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class OrderHistoryController extends GetxController {
|
|||||||
|
|
||||||
Future getOrderHistoryByPassenger() async {
|
Future getOrderHistoryByPassenger() async {
|
||||||
var res = await CRUD().get(link: AppLink.getRides, payload: {
|
var res = await CRUD().get(link: AppLink.getRides, payload: {
|
||||||
'passenger_id': box.read(BoxName.pasengerID).toString(),
|
'passenger_id': box.read(BoxName.passengerID).toString(),
|
||||||
});
|
});
|
||||||
if (res.toString() == 'failure') {
|
if (res.toString() == 'failure') {
|
||||||
Get.snackbar('failure', 'message');
|
Get.snackbar('failure', 'message');
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class PaymentController extends GetxController {
|
|||||||
|
|
||||||
await CRUD().get(
|
await CRUD().get(
|
||||||
link: AppLink.getWalletByPassenger,
|
link: AppLink.getWalletByPassenger,
|
||||||
payload: {'passenger_id': box.read(BoxName.pasengerID)}).then((value) {
|
payload: {'passenger_id': box.read(BoxName.passengerID)}).then((value) {
|
||||||
box.write(BoxName.passengerWalletTotal,
|
box.write(BoxName.passengerWalletTotal,
|
||||||
jsonDecode(value)['message'][0]['total'].toString());
|
jsonDecode(value)['message'][0]['total'].toString());
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ class ProfileController extends GetxController {
|
|||||||
isloading = true;
|
isloading = true;
|
||||||
update();
|
update();
|
||||||
var res = await CRUD().get(link: AppLink.getprofile, payload: {
|
var res = await CRUD().get(link: AppLink.getprofile, payload: {
|
||||||
'id': box.read(BoxName.pasengerID).toString(),
|
'id': box.read(BoxName.passengerID).toString(),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res.toString() == 'failure') {
|
if (res.toString() == 'failure') {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.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/colors.dart';
|
|
||||||
import 'package:ride/constant/links.dart';
|
import 'package:ride/constant/links.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';
|
||||||
@@ -11,20 +10,18 @@ import 'package:ride/views/home/Captin/home_captin.dart';
|
|||||||
import 'package:ride/views/home/map_page.dart';
|
import 'package:ride/views/home/map_page.dart';
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
class RatePassengerController extends GetxController {
|
class RateController extends GetxController {
|
||||||
double selectedRateItemId = -1;
|
double selectedRateItemId = -1;
|
||||||
TextEditingController comment = TextEditingController();
|
TextEditingController comment = TextEditingController();
|
||||||
late String rideId, passengerId, driverId;
|
String? rideId, passengerId, driverId;
|
||||||
|
late GlobalKey<FormState> formKey;
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
if (box.read(BoxName.driverID).toString() != '' ||
|
formKey = GlobalKey<FormState>();
|
||||||
box.read(BoxName.driverID).toString() != null) {
|
|
||||||
passengerId = Get.arguments['passengerId'];
|
passengerId = Get.arguments['passengerId'];
|
||||||
rideId = Get.arguments['rideId'];
|
rideId = Get.arguments['rideId'];
|
||||||
} else {
|
|
||||||
driverId = Get.arguments['driverId'];
|
driverId = Get.arguments['driverId'];
|
||||||
rideId = Get.find<MapPassengerController>().rideId;
|
|
||||||
}
|
|
||||||
super.onInit();
|
super.onInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,9 +44,8 @@ class RatePassengerController extends GetxController {
|
|||||||
'rideId': rideId,
|
'rideId': rideId,
|
||||||
'rating': selectedRateItemId.toString(),
|
'rating': selectedRateItemId.toString(),
|
||||||
'comment': comment.text,
|
'comment': comment.text,
|
||||||
}).then((value) {
|
|
||||||
Get.offAll(const HomeCaptain());
|
|
||||||
});
|
});
|
||||||
|
Get.offAll(const HomeCaptain());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,12 +58,13 @@ class RatePassengerController extends GetxController {
|
|||||||
confirm: MyElevatedButton(title: 'Ok', onPressed: () => Get.back()));
|
confirm: MyElevatedButton(title: 'Ok', onPressed: () => Get.back()));
|
||||||
} else {
|
} else {
|
||||||
await CRUD().post(link: AppLink.addRateToDriver, payload: {
|
await CRUD().post(link: AppLink.addRateToDriver, payload: {
|
||||||
'passenger_id': box.read(BoxName.pasengerID).toString(),
|
'passenger_id': box.read(BoxName.passengerID).toString(),
|
||||||
'driverID': driverId,
|
'driver_id': driverId,
|
||||||
'rideId': rideId,
|
'ride_id': rideId,
|
||||||
'rating': selectedRateItemId.toString(),
|
'rating': selectedRateItemId.toString(),
|
||||||
'comment': comment.text,
|
'comment': comment.text,
|
||||||
}).then((value) {
|
}).then((value) {
|
||||||
|
Get.find<MapPassengerController>().restCounter();
|
||||||
Get.offAll(const MapPage());
|
Get.offAll(const MapPage());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import '../../controller/rate/rate_conroller.dart';
|
|||||||
import '../widgets/elevated_btn.dart';
|
import '../widgets/elevated_btn.dart';
|
||||||
import '../widgets/my_scafold.dart';
|
import '../widgets/my_scafold.dart';
|
||||||
|
|
||||||
class RateCaptain extends StatelessWidget {
|
class RateCaptainFromPassenger extends StatelessWidget {
|
||||||
RateCaptain({super.key});
|
RateCaptainFromPassenger({super.key});
|
||||||
final RatePassengerController controller = Get.put(RatePassengerController());
|
final RateController controller = Get.put(RateController());
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MyScafolld(
|
return MyScafolld(
|
||||||
@@ -72,8 +72,7 @@ class RateCaptain extends StatelessWidget {
|
|||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
),
|
),
|
||||||
Form(
|
SizedBox(
|
||||||
child: SizedBox(
|
|
||||||
width: Get.width * .75,
|
width: Get.width * .75,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
maxLines: 4,
|
maxLines: 4,
|
||||||
@@ -98,8 +97,8 @@ class RateCaptain extends StatelessWidget {
|
|||||||
const OutlineInputBorder(), // Add a border around the input field
|
const OutlineInputBorder(), // Add a border around the input field
|
||||||
enabledBorder: const OutlineInputBorder(
|
enabledBorder: const OutlineInputBorder(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: Colors
|
color:
|
||||||
.blue), // Customize the border color
|
Colors.blue), // Customize the border color
|
||||||
),
|
),
|
||||||
focusedBorder: const OutlineInputBorder(
|
focusedBorder: const OutlineInputBorder(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
@@ -114,13 +113,12 @@ class RateCaptain extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
),
|
),
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Submit rating'.tr,
|
title: 'Submit rating'.tr,
|
||||||
onPressed: () => controller.addRateToPassenger())
|
onPressed: () => controller.addRateToDriver())
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import '../../constant/style.dart';
|
|||||||
import '../../controller/rate/rate_conroller.dart';
|
import '../../controller/rate/rate_conroller.dart';
|
||||||
|
|
||||||
class RatePassenger extends StatelessWidget {
|
class RatePassenger extends StatelessWidget {
|
||||||
final RatePassengerController controller = Get.put(RatePassengerController());
|
final RateController controller = Get.put(RateController());
|
||||||
|
|
||||||
RatePassenger({super.key});
|
RatePassenger({super.key});
|
||||||
|
|
||||||
@@ -75,8 +75,7 @@ class RatePassenger extends StatelessWidget {
|
|||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
),
|
),
|
||||||
Form(
|
SizedBox(
|
||||||
child: SizedBox(
|
|
||||||
width: Get.width * .75,
|
width: Get.width * .75,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
maxLines: 4,
|
maxLines: 4,
|
||||||
@@ -101,8 +100,7 @@ class RatePassenger extends StatelessWidget {
|
|||||||
const OutlineInputBorder(), // Add a border around the input field
|
const OutlineInputBorder(), // Add a border around the input field
|
||||||
enabledBorder: const OutlineInputBorder(
|
enabledBorder: const OutlineInputBorder(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color:
|
color: Colors.blue), // Customize the border color
|
||||||
Colors.blue), // Customize the border color
|
|
||||||
),
|
),
|
||||||
focusedBorder: const OutlineInputBorder(
|
focusedBorder: const OutlineInputBorder(
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
@@ -117,7 +115,6 @@ class RatePassenger extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import 'dart:math';
|
|
||||||
|
|
||||||
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';
|
||||||
@@ -8,7 +6,6 @@ import 'package:ride/constant/style.dart';
|
|||||||
import 'package:ride/controller/home/map_passenger_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/home/map_widget.dart/ride_begin_passenger.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';
|
||||||
|
|
||||||
@@ -16,12 +13,10 @@ import '../../controller/home/menu_controller.dart';
|
|||||||
import 'map_widget.dart/buttom_sheet_map_show.dart';
|
import 'map_widget.dart/buttom_sheet_map_show.dart';
|
||||||
import 'map_widget.dart/cash_confirm_bottom_page.dart';
|
import 'map_widget.dart/cash_confirm_bottom_page.dart';
|
||||||
import 'map_widget.dart/driver_card_from_passenger.dart';
|
import 'map_widget.dart/driver_card_from_passenger.dart';
|
||||||
import 'map_widget.dart/driver_time_arrive_passenger.dart';
|
|
||||||
import 'map_widget.dart/left_main_menu_icons.dart';
|
import 'map_widget.dart/left_main_menu_icons.dart';
|
||||||
import 'map_widget.dart/main_bottom_Menu_map.dart';
|
import 'map_widget.dart/main_bottom_Menu_map.dart';
|
||||||
import 'map_widget.dart/map_menu_widget.dart';
|
import 'map_widget.dart/map_menu_widget.dart';
|
||||||
import 'map_widget.dart/menu_map_page.dart';
|
import 'map_widget.dart/menu_map_page.dart';
|
||||||
import 'map_widget.dart/passenger_info_window.dart';
|
|
||||||
import 'map_widget.dart/payment_method.page.dart';
|
import 'map_widget.dart/payment_method.page.dart';
|
||||||
import 'map_widget.dart/timer_for_cancell_trip_from_passenger.dart';
|
import 'map_widget.dart/timer_for_cancell_trip_from_passenger.dart';
|
||||||
import 'map_widget.dart/timer_to_passenger_from_driver.dart';
|
import 'map_widget.dart/timer_to_passenger_from_driver.dart';
|
||||||
@@ -34,35 +29,6 @@ class MapPage extends StatelessWidget {
|
|||||||
Get.put(MapPassengerController());
|
Get.put(MapPassengerController());
|
||||||
Get.put(MyMenuController());
|
Get.put(MyMenuController());
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
// appBar: AppBar(),
|
|
||||||
// drawer: Drawer(
|
|
||||||
// child: ListView(
|
|
||||||
// padding: EdgeInsets.zero,
|
|
||||||
// children: [
|
|
||||||
// ListTile(
|
|
||||||
// onTap: () {
|
|
||||||
// Get.to(() => const PassengerWallet());
|
|
||||||
// },
|
|
||||||
// leading: Icon(Icons.wallet),
|
|
||||||
// title: Text('My Wallet'),
|
|
||||||
// ),
|
|
||||||
// ListTile(
|
|
||||||
// onTap: () async {
|
|
||||||
// // await OrderHistoryController().getOrderHistoryByPassenger();
|
|
||||||
// Get.to(() => const OrderHistory());
|
|
||||||
// },
|
|
||||||
// leading: Icon(Icons.history),
|
|
||||||
// title: Text('Order History'),
|
|
||||||
// ),
|
|
||||||
// ListTile(
|
|
||||||
// onTap: () {},
|
|
||||||
// leading: Icon(Icons.money),
|
|
||||||
// title: Text('Tariff'),
|
|
||||||
// ),
|
|
||||||
// ],
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
|
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
child: Stack(
|
child: Stack(
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ GetBuilder<MapPassengerController> hexagonClipper() {
|
|||||||
// icon: const Icon(Icons.add),
|
// icon: const Icon(Icons.add),
|
||||||
// ),
|
// ),
|
||||||
Text(
|
Text(
|
||||||
controller.dataCarsLocationByPassenger['message'][0]
|
controller.dataCarsLocationByPassenger['message']
|
||||||
['phone']
|
[controller.carsOrder]['phone']
|
||||||
.toString(),
|
.toString(),
|
||||||
style: AppStyle.title,
|
style: AppStyle.title,
|
||||||
),
|
),
|
||||||
@@ -52,21 +52,21 @@ GetBuilder<MapPassengerController> hexagonClipper() {
|
|||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
controller.dataCarsLocationByPassenger['message'][0]
|
controller.dataCarsLocationByPassenger['message']
|
||||||
['first_name']
|
[controller.carsOrder]['first_name']
|
||||||
.toString() +
|
.toString() +
|
||||||
' ' +
|
' ' +
|
||||||
controller
|
controller
|
||||||
.dataCarsLocationByPassenger['message'][0]
|
.dataCarsLocationByPassenger['message']
|
||||||
['last_name']
|
[controller.carsOrder]['last_name']
|
||||||
.toString(),
|
.toString(),
|
||||||
style: AppStyle.title,
|
style: AppStyle.title,
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'Age is '.tr +
|
'Age is '.tr +
|
||||||
controller
|
controller
|
||||||
.dataCarsLocationByPassenger['message'][0]
|
.dataCarsLocationByPassenger['message']
|
||||||
['age']
|
[controller.carsOrder]['age']
|
||||||
.toString(),
|
.toString(),
|
||||||
style: AppStyle.title,
|
style: AppStyle.title,
|
||||||
),
|
),
|
||||||
@@ -76,28 +76,29 @@ GetBuilder<MapPassengerController> hexagonClipper() {
|
|||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
controller.dataCarsLocationByPassenger['message'][0]
|
controller.dataCarsLocationByPassenger['message']
|
||||||
['make']
|
[controller.carsOrder]['make']
|
||||||
.toString(),
|
.toString(),
|
||||||
style: AppStyle.title,
|
style: AppStyle.title,
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
controller.dataCarsLocationByPassenger['message'][0]
|
controller.dataCarsLocationByPassenger['message']
|
||||||
['model']
|
[controller.carsOrder]['model']
|
||||||
.toString(),
|
.toString(),
|
||||||
style: AppStyle.title,
|
style: AppStyle.title,
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
controller.dataCarsLocationByPassenger['message'][0]
|
controller.dataCarsLocationByPassenger['message']
|
||||||
['seats']
|
[controller.carsOrder]['seats']
|
||||||
.toString(),
|
.toString(),
|
||||||
style: AppStyle.title,
|
style: AppStyle.title,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
controller.dataCarsLocationByPassenger['message'][0]
|
'Rating is '.tr +
|
||||||
['model']
|
controller.dataCarsLocationByPassenger['message']
|
||||||
|
[controller.carsOrder]['ratingDriver']
|
||||||
.toString(),
|
.toString(),
|
||||||
style: AppStyle.title,
|
style: AppStyle.title,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ class PassengerInfoWindow extends StatelessWidget {
|
|||||||
? const SizedBox()
|
? const SizedBox()
|
||||||
: MyElevatedButton(
|
: MyElevatedButton(
|
||||||
title: 'Start the Ride'.tr,
|
title: 'Start the Ride'.tr,
|
||||||
|
kolor: AppColor.greenColor,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
controller.startRideFromDriver();
|
controller.startRideFromDriver();
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -1,15 +1,10 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:ride/constant/links.dart';
|
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
import '../../../constant/box_name.dart';
|
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/firebase/firbase_messge.dart';
|
|
||||||
import '../../../controller/functions/crud.dart';
|
|
||||||
import '../../../controller/home/map_passenger_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
import '../../../main.dart';
|
|
||||||
|
|
||||||
class RideBeginPassenger extends StatelessWidget {
|
class RideBeginPassenger extends StatelessWidget {
|
||||||
const RideBeginPassenger({
|
const RideBeginPassenger({
|
||||||
|
|||||||
@@ -388,7 +388,7 @@ class PassengerWallet extends StatelessWidget {
|
|||||||
payload: {
|
payload: {
|
||||||
'passenger_id': box
|
'passenger_id': box
|
||||||
.read(BoxName
|
.read(BoxName
|
||||||
.pasengerID)
|
.passengerID)
|
||||||
.toString(),
|
.toString(),
|
||||||
'balance': controller
|
'balance': controller
|
||||||
.selectedAmount
|
.selectedAmount
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class PassengerProfilePage extends StatelessWidget {
|
|||||||
action: MyElevatedButton(
|
action: MyElevatedButton(
|
||||||
title: 'Delete My Account'.tr,
|
title: 'Delete My Account'.tr,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
LogOut().deleteMyAccount(box.read(BoxName.pasengerID).toString());
|
LogOut().deleteMyAccount(box.read(BoxName.passengerID).toString());
|
||||||
}),
|
}),
|
||||||
title: 'My Profile'.tr,
|
title: 'My Profile'.tr,
|
||||||
body: [
|
body: [
|
||||||
|
|||||||
@@ -7,10 +7,8 @@ import 'package:ride/views/widgets/my_scafold.dart';
|
|||||||
|
|
||||||
import '../../constant/colors.dart';
|
import '../../constant/colors.dart';
|
||||||
import '../../constant/style.dart';
|
import '../../constant/style.dart';
|
||||||
import '../../controller/functions/launch.dart';
|
|
||||||
import '../../controller/functions/location_controller.dart';
|
import '../../controller/functions/location_controller.dart';
|
||||||
import '../home/map_widget.dart/passenger_info_window.dart';
|
import '../home/map_widget.dart/passenger_info_window.dart';
|
||||||
import '../home/map_widget.dart/timer_to_passenger_from_driver.dart';
|
|
||||||
|
|
||||||
class PassengerLocationDirection extends StatelessWidget {
|
class PassengerLocationDirection extends StatelessWidget {
|
||||||
PassengerLocationDirection({super.key});
|
PassengerLocationDirection({super.key});
|
||||||
|
|||||||
@@ -2,6 +2,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/controller/firebase/firbase_messge.dart';
|
import 'package:ride/controller/firebase/firbase_messge.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/orderCaptin/driver_map_page.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';
|
||||||
@@ -162,6 +163,8 @@ class OrderRequestPage extends StatelessWidget {
|
|||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Apply Order'.tr,
|
title: 'Apply Order'.tr,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
|
box.write(BoxName.statusDriverLocation, 'on');
|
||||||
|
|
||||||
orderRequestController.changeApplied();
|
orderRequestController.changeApplied();
|
||||||
await CRUD().postFromDialogue(
|
await CRUD().postFromDialogue(
|
||||||
link: AppLink.addDriverOrder,
|
link: AppLink.addDriverOrder,
|
||||||
@@ -234,7 +237,7 @@ class OrderRequestPage extends StatelessWidget {
|
|||||||
box.read(BoxName.tokenDriver).toString(),
|
box.read(BoxName.tokenDriver).toString(),
|
||||||
];
|
];
|
||||||
orderRequestController.refuseOrder(
|
orderRequestController.refuseOrder(
|
||||||
myList[6].toString(), body.toString());
|
myList[16].toString(), body.toString());
|
||||||
|
|
||||||
FirebaseMessagesController()
|
FirebaseMessagesController()
|
||||||
.sendNotificationToPassengerToken(
|
.sendNotificationToPassengerToken(
|
||||||
|
|||||||
@@ -436,10 +436,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: google_maps_flutter
|
name: google_maps_flutter
|
||||||
sha256: c290921cd1750b5ede99c82dcaa84740da86278e6ed0f83ad29752b29a8552c6
|
sha256: d4914cb38b3dcb62c39c085d968d434de0f8050f00f4d9f5ba4a7c7e004934cb
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.5.0"
|
||||||
google_maps_flutter_android:
|
google_maps_flutter_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ dependencies:
|
|||||||
firebase_messaging: ^14.6.7
|
firebase_messaging: ^14.6.7
|
||||||
firebase_core: ^2.15.0
|
firebase_core: ^2.15.0
|
||||||
flutter_local_notifications: ^15.1.0+1
|
flutter_local_notifications: ^15.1.0+1
|
||||||
google_maps_flutter: ^2.4.0
|
google_maps_flutter: ^2.5.0
|
||||||
sqflite: ^2.3.0
|
sqflite: ^2.3.0
|
||||||
path: ^1.8.3
|
path: ^1.8.3
|
||||||
google_sign_in: ^6.1.4
|
google_sign_in: ^6.1.4
|
||||||
|
|||||||
Reference in New Issue
Block a user