This commit is contained in:
Hamza-Ayed
2024-05-10 14:53:16 +03:00
parent c5ac5c2b22
commit 4192c1e471
9 changed files with 166 additions and 77 deletions

View File

@@ -15,13 +15,13 @@
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
C60CA7372BE9EF38002095B2 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C60CA7362BE9EF38002095B2 /* GoogleService-Info.plist */; };
C624C4642BD56D34002834AF /* tone1.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = C624C45C2BD56D34002834AF /* tone1.mp3 */; }; C624C4642BD56D34002834AF /* tone1.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = C624C45C2BD56D34002834AF /* tone1.mp3 */; };
C624C4652BD56D34002834AF /* start.wav in Resources */ = {isa = PBXBuildFile; fileRef = C624C45D2BD56D34002834AF /* start.wav */; }; C624C4652BD56D34002834AF /* start.wav in Resources */ = {isa = PBXBuildFile; fileRef = C624C45D2BD56D34002834AF /* start.wav */; };
C624C4672BD56D34002834AF /* promo.wav in Resources */ = {isa = PBXBuildFile; fileRef = C624C45F2BD56D34002834AF /* promo.wav */; }; C624C4672BD56D34002834AF /* promo.wav in Resources */ = {isa = PBXBuildFile; fileRef = C624C45F2BD56D34002834AF /* promo.wav */; };
C624C4682BD56D34002834AF /* cancel.wav in Resources */ = {isa = PBXBuildFile; fileRef = C624C4602BD56D34002834AF /* cancel.wav */; }; C624C4682BD56D34002834AF /* cancel.wav in Resources */ = {isa = PBXBuildFile; fileRef = C624C4602BD56D34002834AF /* cancel.wav */; };
C624C4692BD56D34002834AF /* iphone_ringtone.wav in Resources */ = {isa = PBXBuildFile; fileRef = C624C4612BD56D34002834AF /* iphone_ringtone.wav */; }; C624C4692BD56D34002834AF /* iphone_ringtone.wav in Resources */ = {isa = PBXBuildFile; fileRef = C624C4612BD56D34002834AF /* iphone_ringtone.wav */; };
C624C46A2BD56D34002834AF /* order1.wav in Resources */ = {isa = PBXBuildFile; fileRef = C624C4622BD56D34002834AF /* order1.wav */; }; C624C46A2BD56D34002834AF /* order1.wav in Resources */ = {isa = PBXBuildFile; fileRef = C624C4622BD56D34002834AF /* order1.wav */; };
C690B4752A80554500E1D66E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C690B4742A80554500E1D66E /* GoogleService-Info.plist */; };
C6B15AA12B5FB24600746405 /* order.wav in Resources */ = {isa = PBXBuildFile; fileRef = C6B15A9F2B5FB24600746405 /* order.wav */; }; C6B15AA12B5FB24600746405 /* order.wav in Resources */ = {isa = PBXBuildFile; fileRef = C6B15A9F2B5FB24600746405 /* order.wav */; };
C6B15AA22B5FB24600746405 /* tone2.wav in Resources */ = {isa = PBXBuildFile; fileRef = C6B15AA02B5FB24600746405 /* tone2.wav */; }; C6B15AA22B5FB24600746405 /* tone2.wav in Resources */ = {isa = PBXBuildFile; fileRef = C6B15AA02B5FB24600746405 /* tone2.wav */; };
D529E7C8240CCC30BB7358A2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B099132D71B1299FCDFD9C8 /* Pods_Runner.framework */; }; D529E7C8240CCC30BB7358A2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B099132D71B1299FCDFD9C8 /* Pods_Runner.framework */; };
@@ -72,13 +72,13 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
C60CA7362BE9EF38002095B2 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "../../../../../Downloads/GoogleService-Info.plist"; sourceTree = "<group>"; };
C624C45C2BD56D34002834AF /* tone1.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = tone1.mp3; path = ../../android/app/src/main/res/raw/tone1.mp3; sourceTree = "<group>"; }; C624C45C2BD56D34002834AF /* tone1.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = tone1.mp3; path = ../../android/app/src/main/res/raw/tone1.mp3; sourceTree = "<group>"; };
C624C45D2BD56D34002834AF /* start.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = start.wav; path = ../../android/app/src/main/res/raw/start.wav; sourceTree = "<group>"; }; C624C45D2BD56D34002834AF /* start.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = start.wav; path = ../../android/app/src/main/res/raw/start.wav; sourceTree = "<group>"; };
C624C45F2BD56D34002834AF /* promo.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = promo.wav; path = ../../android/app/src/main/res/raw/promo.wav; sourceTree = "<group>"; }; C624C45F2BD56D34002834AF /* promo.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = promo.wav; path = ../../android/app/src/main/res/raw/promo.wav; sourceTree = "<group>"; };
C624C4602BD56D34002834AF /* cancel.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = cancel.wav; path = ../../android/app/src/main/res/raw/cancel.wav; sourceTree = "<group>"; }; C624C4602BD56D34002834AF /* cancel.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = cancel.wav; path = ../../android/app/src/main/res/raw/cancel.wav; sourceTree = "<group>"; };
C624C4612BD56D34002834AF /* iphone_ringtone.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = iphone_ringtone.wav; path = ../../android/app/src/main/res/raw/iphone_ringtone.wav; sourceTree = "<group>"; }; C624C4612BD56D34002834AF /* iphone_ringtone.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = iphone_ringtone.wav; path = ../../android/app/src/main/res/raw/iphone_ringtone.wav; sourceTree = "<group>"; };
C624C4622BD56D34002834AF /* order1.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = order1.wav; path = ../../android/app/src/main/res/raw/order1.wav; sourceTree = "<group>"; }; C624C4622BD56D34002834AF /* order1.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = order1.wav; path = ../../android/app/src/main/res/raw/order1.wav; sourceTree = "<group>"; };
C690B4742A80554500E1D66E /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
C69588332A8C1F6B00C3AC67 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; }; C69588332A8C1F6B00C3AC67 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
C6B15A9F2B5FB24600746405 /* order.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = order.wav; sourceTree = "<group>"; }; C6B15A9F2B5FB24600746405 /* order.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = order.wav; sourceTree = "<group>"; };
C6B15AA02B5FB24600746405 /* tone2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = tone2.wav; sourceTree = "<group>"; }; C6B15AA02B5FB24600746405 /* tone2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = tone2.wav; sourceTree = "<group>"; };
@@ -175,7 +175,7 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */, 97C147021CF9000F007C117D /* Info.plist */,
C690B4742A80554500E1D66E /* GoogleService-Info.plist */, C60CA7362BE9EF38002095B2 /* GoogleService-Info.plist */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
@@ -297,11 +297,11 @@
C624C4682BD56D34002834AF /* cancel.wav in Resources */, C624C4682BD56D34002834AF /* cancel.wav in Resources */,
C6B15AA12B5FB24600746405 /* order.wav in Resources */, C6B15AA12B5FB24600746405 /* order.wav in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
C690B4752A80554500E1D66E /* GoogleService-Info.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
C624C4692BD56D34002834AF /* iphone_ringtone.wav in Resources */, C624C4692BD56D34002834AF /* iphone_ringtone.wav in Resources */,
C624C4642BD56D34002834AF /* tone1.mp3 in Resources */, C624C4642BD56D34002834AF /* tone1.mp3 in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
C60CA7372BE9EF38002095B2 /* GoogleService-Info.plist in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };

View File

@@ -4,6 +4,7 @@ class AppColor {
static const Color primaryColor = Colors.black; static const Color primaryColor = Colors.black;
static const Color secondaryColor = Colors.white; static const Color secondaryColor = Colors.white;
static const Color accentColor = Colors.grey; static const Color accentColor = Colors.grey;
static const Color pink = Colors.purpleAccent;
static const Color redColor = Color(0xFFEA4335); // Google Red static const Color redColor = Color(0xFFEA4335); // Google Red
static const Color greenColor = Color(0xFF34A853); // Google Green static const Color greenColor = Color(0xFF34A853); // Google Green
static const Color blueColor = Color(0xFF4285F4); // Google Blue static const Color blueColor = Color(0xFF4285F4); // Google Blue

View File

@@ -110,6 +110,20 @@ class FirebaseMessagesController extends GetxController {
fireBaseTitles(message); fireBaseTitles(message);
} }
}); });
FirebaseMessaging.onBackgroundMessage((RemoteMessage message) async {
// Handle background message
if (message.data.isNotEmpty && message.notification != null) {
print(message.notification?.title);
fireBaseTitles(message);
}
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
if (message.data.isNotEmpty && message.notification != null) {
print(message.notification?.title);
fireBaseTitles(message);
}
});
} }
void fireBaseTitles(RemoteMessage message) { void fireBaseTitles(RemoteMessage message) {

View File

@@ -215,6 +215,7 @@ class MapPassengerController extends GetxController {
late double totalCostPassenger = 0; late double totalCostPassenger = 0;
late double totalPassengerComfort = 0; late double totalPassengerComfort = 0;
late double totalPassengerComfortDiscount = 0; late double totalPassengerComfortDiscount = 0;
late double totalPassengerLadyDiscount = 0;
late double totalPassengerSpeedDiscount = 0; late double totalPassengerSpeedDiscount = 0;
late double totalPassengerMotoDelivery = 0; late double totalPassengerMotoDelivery = 0;
late double totalDriver = 0; late double totalDriver = 0;
@@ -1215,14 +1216,24 @@ class MapPassengerController extends GetxController {
carsLocationByPassenger = []; carsLocationByPassenger = [];
LatLngBounds bounds = calculateBounds( LatLngBounds bounds = calculateBounds(
passengerLocation.latitude, passengerLocation.longitude, 7000); passengerLocation.latitude, passengerLocation.longitude, 7000);
var res;
var res = if (box.read(BoxName.carType) == 'Lady') {
await CRUD().get(link: AppLink.getCarsLocationByPassenger, payload: { res = await CRUD()
'southwestLat': bounds.southwest.latitude.toString(), .get(link: AppLink.getFemalDriverLocationByPassenger, payload: {
'southwestLon': bounds.southwest.longitude.toString(), 'southwestLat': bounds.southwest.latitude.toString(),
'northeastLat': bounds.northeast.latitude.toString(), 'southwestLon': bounds.southwest.longitude.toString(),
'northeastLon': bounds.northeast.longitude.toString(), 'northeastLat': bounds.northeast.latitude.toString(),
}); 'northeastLon': bounds.northeast.longitude.toString(),
});
} else {
res = await CRUD()
.get(link: AppLink.getCarsLocationByPassenger, payload: {
'southwestLat': bounds.southwest.latitude.toString(),
'southwestLon': bounds.southwest.longitude.toString(),
'northeastLat': bounds.northeast.latitude.toString(),
'northeastLon': bounds.northeast.longitude.toString(),
});
}
if (res == 'failure') { if (res == 'failure') {
noCarString = true; noCarString = true;
dataCarsLocationByPassenger = res; dataCarsLocationByPassenger = res;
@@ -2358,6 +2369,7 @@ class MapPassengerController extends GetxController {
double costForDriver = 0; double costForDriver = 0;
double totalPassengerSpeed = 0; double totalPassengerSpeed = 0;
double totalPassengerLady = 0;
Future bottomSheet() async { Future bottomSheet() async {
if (data.isNotEmpty) { if (data.isNotEmpty) {
durationToAdd = Duration(seconds: durationToRide); durationToAdd = Duration(seconds: durationToRide);
@@ -2374,7 +2386,7 @@ class MapPassengerController extends GetxController {
print('costDistance----- $costDistance'); print('costDistance----- $costDistance');
print( print(
'passengerWalletTotal----- ${box.read(BoxName.passengerWalletTotal)}'); 'passengerWalletTotal----- ${box.read(BoxName.passengerWalletTotal)}');
double costComfort, costSpeed, costDelivery, costMashwari = 0; double costComfort, costSpeed, costDelivery, costMashwari, costLady = 0;
update(); update();
if (currentTime.hour >= 22 && currentTime.hour < 5) { if (currentTime.hour >= 22 && currentTime.hour < 5) {
// costDistance = distance * latePrice; // costDistance = distance * latePrice;
@@ -2382,6 +2394,7 @@ class MapPassengerController extends GetxController {
costMashwari = (distance * mashwariPrice) + costDuration * latePrice; costMashwari = (distance * mashwariPrice) + costDuration * latePrice;
costSpeed = (distance * speedPrice) + costDuration * latePrice; costSpeed = (distance * speedPrice) + costDuration * latePrice;
costDelivery = (distance * deliveryPrice) + costDuration * latePrice; costDelivery = (distance * deliveryPrice) + costDuration * latePrice;
costLady = (distance * comfortPrice + 2) + costDuration * latePrice;
update(); update();
} else if (currentTime.hour >= 13 && currentTime.hour <= 16) { } else if (currentTime.hour >= 13 && currentTime.hour <= 16) {
@@ -2391,6 +2404,7 @@ class MapPassengerController extends GetxController {
costMashwari = (distance * mashwariPrice) + costDuration * heavyPrice; costMashwari = (distance * mashwariPrice) + costDuration * heavyPrice;
costSpeed = (distance * speedPrice) + costDuration * heavyPrice; costSpeed = (distance * speedPrice) + costDuration * heavyPrice;
costDelivery = (distance * deliveryPrice) + costDuration * heavyPrice; costDelivery = (distance * deliveryPrice) + costDuration * heavyPrice;
costLady = (distance * comfortPrice + 2) + costDuration * heavyPrice;
update(); update();
// } / // } /
@@ -2400,6 +2414,7 @@ class MapPassengerController extends GetxController {
costMashwari = (distance * mashwariPrice) + costDuration; costMashwari = (distance * mashwariPrice) + costDuration;
costSpeed = (distance * speedPrice) + costDuration; costSpeed = (distance * speedPrice) + costDuration;
costDelivery = (distance * deliveryPrice) + costDuration; costDelivery = (distance * deliveryPrice) + costDuration;
costLady = (distance * comfortPrice + 2) + costDuration;
update(); update();
} }
//print('cost $cost'); //print('cost $cost');
@@ -2409,14 +2424,23 @@ class MapPassengerController extends GetxController {
totalPassenger = costSpeed + (costSpeed * kazan / 100); totalPassenger = costSpeed + (costSpeed * kazan / 100);
totalPassengerComfort = totalPassengerComfort =
(costComfort + (costComfort * kazan / 100)).ceilToDouble(); (costComfort + (costComfort * kazan / 100)).ceilToDouble();
totalPassengerLady = (costLady + (costLady * kazan / 100)).ceilToDouble();
totalPassengerSpeed = totalPassengerSpeed =
(costSpeed + (costSpeed * kazan / 100)).ceilToDouble(); (costSpeed + (costSpeed * kazan / 100)).ceilToDouble();
totalPassengerComfortDiscount = totalPassengerComfortDiscount =
totalPassengerComfort + totalPassengerComfort * (kazan - 0) / 100; totalPassengerComfort + totalPassengerComfort * (kazan - 0) / 100;
totalPassengerLadyDiscount =
totalPassengerLady + totalPassengerLady * (kazan - 0) / 100;
totalPassengerSpeedDiscount = totalPassengerSpeedDiscount =
totalPassengerSpeed + totalPassengerSpeed * (kazan - 2) / 100; totalPassengerSpeed + totalPassengerSpeed * (kazan - 2) / 100;
totalPassengerMotoDelivery = totalPassengerMotoDelivery =
(costDelivery + (costDelivery * kazan / 100)).ceilToDouble(); (costDelivery + (costDelivery * kazan / 100)).ceilToDouble();
totalPassengerComfort = totalPassengerComfortDiscount -
(totalPassengerComfortDiscount * kazan / 100);
totalPassengerSpeed = totalPassengerSpeedDiscount -
(totalPassengerSpeedDiscount * kazan / 100);
totalPassengerLady = totalPassengerLadyDiscount -
(totalPassengerLadyDiscount * kazan / 100);
totalDriver = totalDriver1 + (totalDriver1 * kazan / 100); totalDriver = totalDriver1 + (totalDriver1 * kazan / 100);
tax = totalCostPassenger * kazan / 100; tax = totalCostPassenger * kazan / 100;
totalME = totalCostPassenger - tax; totalME = totalCostPassenger - tax;

View File

@@ -4,6 +4,10 @@ class MyTranslation extends Translations {
@override @override
Map<String, Map<String, String>> get keys => { Map<String, Map<String, String>> get keys => {
"ar": { "ar": {
'Pick or Tap to confirm': "اختر أو اضغط للتأكيد",
"To use Wallet charge it": "لاستخدام المحفظة، قم بشحنها.",
'\$ Next as Cash \$!': '\$ Cash \$ ',
'This trip just for girls only': "هذه الرحلة فقط للفتيات ",
'How do I request a ride?': 'كيف يمكنني طلب رحلة؟', 'How do I request a ride?': 'كيف يمكنني طلب رحلة؟',
'Step-by-step instructions on how to request a ride through the Sefer app.': 'Step-by-step instructions on how to request a ride through the Sefer app.':
'تعليمات خطوة بخطوة حول كيفية طلب رحلة من خلال تطبيق Sefer.', 'تعليمات خطوة بخطوة حول كيفية طلب رحلة من خلال تطبيق Sefer.',
@@ -31,7 +35,7 @@ class MyTranslation extends Translations {
'ما هي التدابير الأمنية التي يقدمها Sefer؟', 'ما هي التدابير الأمنية التي يقدمها Sefer؟',
'Sefer prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.': 'Sefer prioritizes your safety. We offer features like driver verification, in-app trip tracking, and emergency contact options.':
'يعمل Sefer على أولوية سلامتك. نحن نقدم ميزات مثل التحقق من السائق، وتتبع الرحلة داخل التطبيق، وخيارات الاتصال بالطوارئ.', 'يعمل Sefer على أولوية سلامتك. نحن نقدم ميزات مثل التحقق من السائق، وتتبع الرحلة داخل التطبيق، وخيارات الاتصال بالطوارئ.',
'Frequently questions': 'الأسئلة المتكررة ', 'Frequently Questions': 'الأسئلة المتكررة ',
'About Us': 'عننا', 'About Us': 'عننا',
'SEFER is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:': 'SEFER is a ride-sharing app designed with your safety and affordability in mind. We connect you with reliable drivers in your area, ensuring a convenient and stress-free travel experience.\n\nHere are some of the key features that set us apart:':
"سفر هو تطبيق مشاركة رحلات مصمم مع وضع سلامتك وإمكانياتك المادية في الاعتبار. نوفر لك اتصالًا بسائقين موثوقين في منطقتك ، مما يضمن تجربة سفر مريحة وخالية من التوتر.\n\n فيما يلي بعض الميزات الرئيسية التي تميزنا:", "سفر هو تطبيق مشاركة رحلات مصمم مع وضع سلامتك وإمكانياتك المادية في الاعتبار. نوفر لك اتصالًا بسائقين موثوقين في منطقتك ، مما يضمن تجربة سفر مريحة وخالية من التوتر.\n\n فيما يلي بعض الميزات الرئيسية التي تميزنا:",

View File

@@ -60,7 +60,7 @@ class HomePage extends StatelessWidget {
ListTile( ListTile(
leading: const Icon(Icons.question_answer), leading: const Icon(Icons.question_answer),
title: Text( title: Text(
'Frequently questions'.tr, 'Frequently Questions'.tr,
style: AppStyle.headTitle2, style: AppStyle.headTitle2,
), ),
subtitle: subtitle:

View File

@@ -29,6 +29,10 @@ List<CarType> carTypes = [
carType: 'Speed', carType: 'Speed',
carDetail: 'Closest & Cheapest'.tr, carDetail: 'Closest & Cheapest'.tr,
image: 'assets/images/carspeed.png'), image: 'assets/images/carspeed.png'),
CarType(
carType: 'Lady',
carDetail: 'Lady Captain for girls'.tr,
image: 'assets/images/blob.png'),
CarType( CarType(
carType: 'Delivery', carType: 'Delivery',
carDetail: 'Delivery service'.tr, carDetail: 'Delivery service'.tr,
@@ -91,7 +95,7 @@ class CarDetailsTypeToChoose extends StatelessWidget {
height: 50, height: 50,
), ),
SizedBox( SizedBox(
width: Get.width * .4, width: Get.width * .25,
child: Column( child: Column(
children: [ children: [
Text( Text(
@@ -100,32 +104,36 @@ class CarDetailsTypeToChoose extends StatelessWidget {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 20), fontSize: 20),
), ),
Text( // Text(
carType.carDetail, // carType.carDetail,
style: AppStyle.subtitle, // style: AppStyle.subtitle,
), // ),
], ],
), ),
), ),
Column( Text(
children: [ carType.carType == 'Comfort'
Text( ? mapPassengerController
carType.carType == 'Comfort' .totalPassengerComfort
.toStringAsFixed(2)
: carType.carType == 'Speed'
? mapPassengerController ? mapPassengerController
.totalPassengerComfort .totalPassengerSpeed
.toStringAsFixed(2) .toStringAsFixed(2)
: carType.carType == 'Speed' : carType.carType == 'Delivery'
? mapPassengerController ? mapPassengerController
.totalPassengerSpeed .totalPassengerMotoDelivery
.toStringAsFixed(2) .toStringAsFixed(2)
: carType.carType == 'Delivery' : carType.carType == 'Lady'
? mapPassengerController ? mapPassengerController
.totalPassengerMotoDelivery .totalPassengerLady
.toStringAsFixed(2) .toStringAsFixed(2)
: '50', : '50',
style: AppStyle.title style:
.copyWith(fontSize: 20), AppStyle.title.copyWith(fontSize: 20),
), ),
Row(
children: [
carType.carType == 'Comfort' && carType.carType == 'Comfort' &&
(mapPassengerController (mapPassengerController
.totalPassengerSpeed > .totalPassengerSpeed >
@@ -192,9 +200,45 @@ class CarDetailsTypeToChoose extends StatelessWidget {
) )
], ],
) )
: const SizedBox( : carType.carType == 'Lady' &&
width: 3, (mapPassengerController
), .totalPassengerLady >
20)
? Row(
children: [
Container(
decoration: AppStyle
.boxDecoration1,
child: Text(
'-10%',
style: AppStyle
.subtitle
.copyWith(
color: AppColor
.greenColor),
)),
const SizedBox(
width: 10,
),
Text(
mapPassengerController
.totalPassengerLadyDiscount
.toStringAsFixed(
2),
style: AppStyle.title
.copyWith(
color: AppColor
.redColor,
decoration:
TextDecoration
.lineThrough, // Strikethrough line
),
)
],
)
: const SizedBox(
width: 3,
),
], ],
), ),
const SizedBox( const SizedBox(
@@ -283,7 +327,7 @@ class CarDetailsTypeToChoose extends StatelessWidget {
})); }));
} else if (mapPassengerController } else if (mapPassengerController
.selectedIndex == .selectedIndex ==
2) { 3) {
box.write(BoxName.carType, 'Delivery'); box.write(BoxName.carType, 'Delivery');
mapPassengerController.totalPassenger = mapPassengerController.totalPassenger =
mapPassengerController mapPassengerController
@@ -317,7 +361,7 @@ class CarDetailsTypeToChoose extends StatelessWidget {
})); }));
} else if (mapPassengerController } else if (mapPassengerController
.selectedIndex == .selectedIndex ==
3) { 4) {
box.write(BoxName.carType, 'Mashwari'); box.write(BoxName.carType, 'Mashwari');
mapPassengerController.totalPassenger = 50; mapPassengerController.totalPassenger = 50;
Get.defaultDialog( Get.defaultDialog(
@@ -347,49 +391,49 @@ class CarDetailsTypeToChoose extends StatelessWidget {
onPressed: () { onPressed: () {
Get.back(); Get.back();
})); }));
} else if (mapPassengerController
.selectedIndex ==
2) {
box.write(BoxName.carType, 'Lady');
mapPassengerController.totalPassenger =
mapPassengerController
.totalPassengerSpeed;
Get.defaultDialog(
title: 'Lady',
titleStyle: AppStyle.title,
content: CarDialogue(
textToSpeechController:
textToSpeechController,
image: 'assets/images/blob.png',
text: 'This trip just for girls only'
.tr),
confirm: MyElevatedButton(
kolor: AppColor.greenColor,
title: 'Next'.tr,
onPressed: () {
Get.back();
mapPassengerController
.isBottomSheetShown = false;
mapPassengerController.update();
mapPassengerController
.changeCashConfirmPageShown();
}),
cancel: MyElevatedButton(
title: 'Cancel'.tr,
kolor: AppColor.redColor,
onPressed: () {
Get.back();
}));
} else {
Get.snackbar('You should select one'.tr, '',
backgroundColor: AppColor.redColor);
} }
} else {
Get.snackbar('You should select one'.tr, '',
backgroundColor: AppColor.redColor);
} }
}, },
); );
}, },
), ),
), ),
// MyElevatedButton(
// title: 'Next'.tr,
// onPressed: () {
// if (mapPassengerController.selectedIndex != -1) {
// // Get.snackbar('You should select one'.tr, '',
// // backgroundColor: AppColor.greenColor);
// if (mapPassengerController.selectedIndex == 0) {
// box.write(BoxName.carType, 'Comfort');
// mapPassengerController.totalPassenger =
// mapPassengerController.totalPassengerComfort;
// } else if (mapPassengerController.selectedIndex ==
// 1) {
// box.write(BoxName.carType, 'Speed');
// } else if (mapPassengerController.selectedIndex ==
// 2) {
// box.write(BoxName.carType, 'Delivery');
// mapPassengerController.totalPassenger =
// mapPassengerController
// .totalPassengerMotoDelivery;
// } else if (mapPassengerController.selectedIndex ==
// 3) {
// box.write(BoxName.carType, 'FreeRide');
// mapPassengerController.totalPassenger = 50;
// }
// mapPassengerController.isBottomSheetShown = false;
// mapPassengerController.update();
// mapPassengerController.changeCashConfirmPageShown();
// // mapPassengerController.confirmRideForFirstDriver();
// } else {
// Get.snackbar('You should select one'.tr, '',
// backgroundColor: AppColor.redColor);
// }
// })
], ],
), ),
), ),

View File

@@ -29,7 +29,9 @@ class CashConfirmPageShown extends StatelessWidget {
? controller.cashConfirmPageShown ? controller.cashConfirmPageShown
: 0, : 0,
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColor.secondaryColor, color: box.read(BoxName.carType) == 'Lady'
? Colors.pink.shade100
: AppColor.secondaryColor,
borderRadius: BorderRadius.circular(15)), borderRadius: BorderRadius.circular(15)),
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20), padding: const EdgeInsets.symmetric(horizontal: 20),
@@ -70,7 +72,7 @@ class CashConfirmPageShown extends StatelessWidget {
), ),
Text( Text(
// '${'Your Wallet balance is '.tr}JD ', // '${'Your Wallet balance is '.tr}JD ',
'${'Your Wallet balance is '.tr} ${box.read(BoxName.passengerWalletTotal).toString()}${' \$'.tr}', '${'Your Wallet balance is '.tr} ${box.read(BoxName.passengerWalletTotal).toString()} ${box.read(BoxName.countryCode) == 'Egypt' ? 'LE'.tr : 'JOD'.tr}',
style: AppStyle.subtitle, style: AppStyle.subtitle,
), ),
], ],
@@ -159,7 +161,7 @@ class CashConfirmPageShown extends StatelessWidget {
), ),
MyElevatedButton( MyElevatedButton(
kolor: AppColor.greenColor, kolor: AppColor.greenColor,
title: 'Next as Cash \$\$!'.tr, title: '\$ Next as Cash \$!'.tr,
onPressed: () { onPressed: () {
paymentController.isCashChecked = true; paymentController.isCashChecked = true;
paymentController.isWalletChecked = false; paymentController.isWalletChecked = false;

View File

@@ -288,7 +288,7 @@ class MainBottomMenuMap extends StatelessWidget {
children: [ children: [
IconButton( IconButton(
onPressed: () { onPressed: () {
controller.changeMainBottomMenuMap(); // controller.changeMainBottomMenuMap();
}, },
icon: controller.isMainBottomMenuMap icon: controller.isMainBottomMenuMap
? const Icon( ? const Icon(