Initial commit

This commit is contained in:
Hamza-Ayed
2024-10-12 19:19:26 +03:00
parent 2e3ce78fe8
commit aca697578d
41 changed files with 2976 additions and 1188 deletions

View File

@@ -33,6 +33,7 @@ class ApplyOrderWidget extends StatelessWidget {
InkWell(
onTap: () {
if (box.read(BoxName.carType) == 'Speed' ||
box.read(BoxName.carType) == 'Awfar Car' ||
box.read(BoxName.carType) == 'Delivery') {
Get.snackbar(
'This price is'.tr +
@@ -117,16 +118,24 @@ class ApplyOrderWidget extends StatelessWidget {
: box.read(BoxName.carType) == 'Speed'
? 'assets/images/carspeed.png'
: box.read(BoxName.carType) ==
'Delivery'
'Scooter'
? 'assets/images/moto.png'
: box.read(BoxName.carType) ==
'Mashwari'
'Mishwar Vip'
? 'assets/images/freeRide.png'
: box.read(BoxName
.carType) ==
'Rayeh Gai'
? 'assets/images/roundtrip.png'
: 'assets/images/carspeed.png', // Default image if none of the above
'Awfar Car'
? 'assets/images/balash.png'
: box.read(BoxName
.carType) ==
'Pink Bike'
? 'assets/images/pinkBike.png'
: box.read(BoxName
.carType) ==
'Rayeh Gai'
? 'assets/images/roundtrip.png'
: 'assets/images/carspeed.png', // Default image if none of the above
width: 80,
),
Column(
@@ -159,11 +168,51 @@ class ApplyOrderWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
CircleAvatar(
radius: 30,
radius: 25,
backgroundImage: NetworkImage(
// '',
// ),
'${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg'),
'${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg',
),
child: Builder(
builder: (context) {
return Image.network(
'${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg',
fit: BoxFit.cover,
loadingBuilder: (BuildContext context,
Widget child,
ImageChunkEvent? loadingProgress) {
if (loadingProgress == null) {
return child; // Image is loaded
} else {
return Center(
child: CircularProgressIndicator(
value: loadingProgress
.expectedTotalBytes !=
null
? loadingProgress
.cumulativeBytesLoaded /
(loadingProgress
.expectedTotalBytes ??
1)
: null,
),
);
}
},
errorBuilder: (BuildContext context,
Object error,
StackTrace? stackTrace) {
return const Icon(
Icons
.person, // Icon to show when image fails to load
size:
25, // Adjust the size as needed
color: AppColor
.blueColor, // Color for the error icon
);
},
);
},
),
),
Column(
children: [
@@ -196,7 +245,8 @@ class ApplyOrderWidget extends StatelessWidget {
'message From passenger',
'Hello, I\'m at the agreed-upon location'
.tr,
controller.driverToken,
controller.driverToken
.toString(),
'ding.wav',
);
Get.back();

View File

@@ -1,11 +1,14 @@
import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/constant/colors.dart';
import 'package:SEFER/constant/style.dart';
import 'package:SEFER/controller/home/blinking_promo_controller.dart.dart';
import 'package:SEFER/main.dart';
import 'package:SEFER/views/home/profile/passenger_profile_page.dart';
import 'package:SEFER/views/widgets/elevated_btn.dart';
import 'package:SEFER/views/widgets/my_dialog.dart';
import 'package:SEFER/views/widgets/my_textField.dart';
import 'package:flutter/material.dart';
import 'package:flutter_confetti/flutter_confetti.dart';
import 'package:get/get.dart';
import '../../../constant/info.dart';
@@ -158,35 +161,35 @@ class CarDetailsTypeToChoose extends StatelessWidget {
carType.carType == 'Comfort'
? mapPassengerController
.totalPassengerComfort
.toStringAsFixed(2)
.toStringAsFixed(1)
: carType.carType == 'Speed'
? mapPassengerController
.totalPassengerSpeed
.toStringAsFixed(2)
.toStringAsFixed(1)
: carType.carType == 'Awfar Car'
? mapPassengerController
.totalPassengerBalash
.toStringAsFixed(2)
.toStringAsFixed(1)
: carType.carType == 'Scooter'
? mapPassengerController
.totalPassengerScooter
.toStringAsFixed(2)
.toStringAsFixed(1)
: carType.carType == 'Lady'
? mapPassengerController
.totalPassengerLady
.toStringAsFixed(2)
.toStringAsFixed(1)
: carType.carType ==
'Pink Bike'
? mapPassengerController
.totalPassengerScooter
.toStringAsFixed(
2)
1)
: carType.carType ==
'Rayeh Gai'
? mapPassengerController
.totalPassengerRayehGai
.toStringAsFixed(
2)
1)
: '50',
style:
AppStyle.title.copyWith(fontSize: 20),
@@ -203,7 +206,18 @@ class CarDetailsTypeToChoose extends StatelessWidget {
decoration:
AppStyle.boxDecoration1,
child: Text(
'-12%',
mapPassengerController
.promoTaken
? mapPassengerController
.totalPassengerComfortDiscount
.toStringAsFixed(
1)
: (mapPassengerController
.totalPassengerComfortDiscount -
mapPassengerController
.totalPassengerComfort)
.toStringAsFixed(
1),
style: AppStyle.subtitle
.copyWith(
color: AppColor
@@ -214,8 +228,15 @@ class CarDetailsTypeToChoose extends StatelessWidget {
),
Text(
mapPassengerController
.totalPassengerComfortDiscount
.toStringAsFixed(2),
.promoTaken
? (mapPassengerController
.totalPassengerComfortDiscount +
mapPassengerController
.totalPassengerComfort)
.toStringAsFixed(1)
: mapPassengerController
.totalPassengerComfortDiscount
.toStringAsFixed(1),
style:
AppStyle.title.copyWith(
color: AppColor.redColor,
@@ -235,7 +256,18 @@ class CarDetailsTypeToChoose extends StatelessWidget {
decoration: AppStyle
.boxDecoration1,
child: Text(
'-10%',
mapPassengerController
.promoTaken
? mapPassengerController
.totalPassengerSpeedDiscount
.toStringAsFixed(
1)
: (mapPassengerController
.totalPassengerSpeedDiscount -
mapPassengerController
.totalPassengerSpeed)
.toStringAsFixed(
1),
style: AppStyle
.subtitle
.copyWith(
@@ -247,8 +279,17 @@ class CarDetailsTypeToChoose extends StatelessWidget {
),
Text(
mapPassengerController
.totalPassengerSpeedDiscount
.toStringAsFixed(2),
.promoTaken
? (mapPassengerController
.totalPassengerSpeedDiscount +
mapPassengerController
.totalPassengerSpeed)
.toStringAsFixed(
1)
: mapPassengerController
.totalPassengerSpeedDiscount
.toStringAsFixed(
1),
style: AppStyle.title
.copyWith(
color:
@@ -263,14 +304,25 @@ class CarDetailsTypeToChoose extends StatelessWidget {
'Awfar Car' &&
(mapPassengerController
.totalPassengerBalash >
15)
20)
? Row(
children: [
Container(
decoration: AppStyle
.boxDecoration1,
child: Text(
'-10%',
mapPassengerController
.promoTaken
? mapPassengerController
.totalPassengerBalashDiscount
.toStringAsFixed(
1)
: (mapPassengerController
.totalPassengerBalashDiscount -
mapPassengerController
.totalPassengerBalash)
.toStringAsFixed(
1),
style: AppStyle
.subtitle
.copyWith(
@@ -282,9 +334,17 @@ class CarDetailsTypeToChoose extends StatelessWidget {
),
Text(
mapPassengerController
.totalPassengerBalashDiscount
.toStringAsFixed(
2),
.promoTaken
? (mapPassengerController
.totalPassengerBalashDiscount +
mapPassengerController
.totalPassengerBalash)
.toStringAsFixed(
1)
: mapPassengerController
.totalPassengerBalashDiscount
.toStringAsFixed(
1),
style: AppStyle.title
.copyWith(
color: AppColor
@@ -306,7 +366,15 @@ class CarDetailsTypeToChoose extends StatelessWidget {
decoration: AppStyle
.boxDecoration1,
child: Text(
'-10%',
mapPassengerController
.promoTaken
? mapPassengerController
.totalPassengerLadyDiscount
.toStringAsFixed(
1)
: (mapPassengerController.totalPassengerLadyDiscount -
mapPassengerController.totalPassengerLady)
.toStringAsFixed(0),
style: AppStyle
.subtitle
.copyWith(
@@ -318,9 +386,17 @@ class CarDetailsTypeToChoose extends StatelessWidget {
),
Text(
mapPassengerController
.totalPassengerLadyDiscount
.toStringAsFixed(
2),
.promoTaken
? (mapPassengerController
.totalPassengerLadyDiscount +
mapPassengerController
.totalPassengerLady)
.toStringAsFixed(
0)
: mapPassengerController
.totalPassengerLadyDiscount
.toStringAsFixed(
1),
style: AppStyle
.title
.copyWith(
@@ -624,11 +700,88 @@ class CarDetailsTypeToChoose extends StatelessWidget {
title: 'Next'.tr,
onPressed: () {
Get.back();
mapPassengerController
.isBottomSheetShown = false;
mapPassengerController.update();
mapPassengerController
.changeCashConfirmPageShown();
Get.defaultDialog(
barrierDismissible: false,
title:
"Select betweeen types".tr,
content: Row(
mainAxisAlignment:
MainAxisAlignment
.spaceBetween,
children: [
Container(
decoration: AppStyle
.boxDecoration1,
child: Padding(
padding:
const EdgeInsets
.all(8.0),
child: Column(
children: [
Text('Awfar Car'
.tr),
Text(mapPassengerController
.totalPassengerRayehGaiBalash
.toStringAsFixed(
0)),
],
),
)),
Container(
decoration: AppStyle
.boxDecoration1,
child: Padding(
padding:
const EdgeInsets
.all(8.0),
child: Column(
children: [
Text('Speed'.tr),
Text(mapPassengerController
.totalPassengerRayehGai
.toStringAsFixed(
0)),
],
),
)),
Container(
decoration: AppStyle
.boxDecoration1,
child: Padding(
padding:
const EdgeInsets
.all(8.0),
child: Column(
children: [
Text(
'Comfort'.tr),
Text(mapPassengerController
.totalPassengerRayehGaiComfort
.toStringAsFixed(
0)),
],
),
))
],
),
cancel: MyElevatedButton(
kolor: AppColor.redColor,
title: 'Cancel'.tr,
onPressed: () =>
Get.back()),
confirm: MyElevatedButton(
kolor: AppColor.greenColor,
title: 'Next'.tr,
onPressed: () {
mapPassengerController
.isBottomSheetShown =
false;
mapPassengerController
.update();
mapPassengerController
.changeCashConfirmPageShown();
}));
}),
cancel: MyElevatedButton(
title: 'Cancel'.tr,
@@ -656,6 +809,87 @@ class CarDetailsTypeToChoose extends StatelessWidget {
}
}
class PromoCode extends StatelessWidget {
const PromoCode({super.key});
@override
Widget build(BuildContext context) {
Get.put(BlinkingController());
return GetBuilder<MapPassengerController>(
builder: (mapPassengerController) {
return mapPassengerController.data.isNotEmpty &&
mapPassengerController.isBottomSheetShown &&
mapPassengerController.rideConfirm == false &&
mapPassengerController.promoTaken == false
? GetBuilder<BlinkingController>(builder: (blinkingController) {
blinkingController.startBlinking();
return Positioned(
right: 5,
bottom: Get.height * 0.5,
child: Obx(() {
return AnimatedContainer(
duration: const Duration(milliseconds: 500),
width: 70, // Circle size
height: 70,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: blinkingController.isLightOn.value
? Colors.yellow
: Colors.grey, // Light on/off effect
border: Border.all(
color: blinkingController
.borderColor.value, // Animated border color
width: 3,
),
),
child: IconButton(
onPressed: () {
Get.defaultDialog(
title: 'Insert Your Promo Code'.tr,
content: Form(
key: mapPassengerController.promoFormKey,
child: MyTextForm(
controller: mapPassengerController.promo,
label: 'Insert Your Promo Code'.tr,
hint: 'Enter promo code here'.tr,
type: TextInputType.name,
),
),
confirm: MyElevatedButton(
title: 'Ok'.tr,
onPressed: () {
if (mapPassengerController
.promoFormKey.currentState!
.validate()) {
mapPassengerController
.applyPromoCodeToPassenger(context);
Get.back();
}
}));
},
icon: const Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.local_offer, size: 24), // Promo icon
SizedBox(height: 4),
Text(
"Promo",
style: TextStyle(
fontSize: 12, fontWeight: FontWeight.bold),
),
],
),
),
);
}),
);
})
: const SizedBox();
},
);
}
}
class BurcMoney extends StatelessWidget {
const BurcMoney({super.key});

View File

@@ -168,7 +168,8 @@ class CashConfirmPageShown extends StatelessWidget {
paymentController.update();
controller.changeCashConfirmPageShown();
controller.isSearchingWindow = true;
controller.confirmRideForFirstDriver();
controller
.confirmRideForAllDriverAvailable();
controller.update();
},
),
@@ -179,7 +180,7 @@ class CashConfirmPageShown extends StatelessWidget {
onPressed: () {
controller.changeCashConfirmPageShown();
controller.isSearchingWindow = true;
controller.confirmRideForFirstDriver();
controller.confirmRideForAllDriverAvailable();
controller.update();
},
), // Add a fallback widget if none of the conditions are met

View File

@@ -318,7 +318,7 @@ class GoogleMapPassengerWidget extends StatelessWidget {
// icon: controller.endIcon,
// ),
// },
polygons: controller.polygons,
polylines: {
Polyline(
zIndex: 2,

View File

@@ -9,6 +9,7 @@ import '../../../controller/firebase/firbase_messge.dart';
import '../../../controller/functions/audio_record1.dart';
import '../../../controller/functions/tts.dart';
import '../../../controller/home/map_passenger_controller.dart';
import '../../../print.dart';
GetBuilder<MapPassengerController> leftMainMenuIcons() {
final textToSpeechController = Get.put(TextToSpeechController());
@@ -121,50 +122,58 @@ GetBuilder<MapPassengerController> leftMainMenuIcons() {
// borderRadius: BorderRadius.circular(15)),
// child: IconButton(
// onPressed: () async {
// // Get.to(SmsSignupEgypt());
// List<String> d = [
// "30.003028,31.2419628",
// "30.0955661,31.2665336",
// "160.00",
// "25.92",
// "1488",
// "16.93",
// "114243034311436865474",
// "113172279072358305645",
// "hamza ayed",
// "rlMbi4Hc8L1STMPE99iPKqK4Gddwv8r9qZOCadsz9qTEJZ6KLEE9ruTJI6N8dKfK4CXez5pme5WIs14-1QGo29s07fQOniZgIlJV5XFL3yqzPRSUmn3",
// "+201023248456",
// "1 min",
// "1 m",
// "false",
// "QwUMoyUtZ0J3oR6yXKUavrB_gBl9npUZe-qZtax-Raq4QBbdKv0AmtLKm0BfBd6N_592HBv4CVa41ii4122W3hr-BCUKKzJhzZcK8m0YjbWbtpvgJRD8uD_nuMk9",
// "0",
// "238",
// "false",
// "114243034311436865474",
// "1488",
// "startEnd",
// "30.049307749732176,31.274291574954987",
// "",
// "",
// "",
// "",
// "17.73",
// "0",
// "hamzaayedflutter@gmail.com",
// "الفسطاط، حي مصر القديمة، مصر",
// " الزاوية الحمراء، محافظة القاهرة، مصر",
// "Speed",
// "8",
// "5.00"
// ];
// FirebaseMessagesController().sendNotificationToDriverMAP(
// 'Order'.tr,
// 'from: ',
// // jsonDecode(value)['message'].toString(),
// 'd3JaCCFAQeu8QTxRnlC1sB:APA91bFuRjbVK32obIFYXFTI4iwsZEPrrgwvPouob2bXivID-W4aXz51J_OIJ2nHpNU2ocOvGLD1Ip65rLViAFx5qHVE-c8FabBwBi5fSQ-lDTQfe36xxKsc9DU-sTyj_FoYrrMnLNVi',
// d,
// 'order.wav');
// Get.to(SmsSignupEgypt());
// List<String> d = [
// "30.003028,31.2419628",
// "30.0955661,31.2665336",
// "160.00",
// "25.92",
// "1488",
// "16.93",
// "114243034311436865474",
// "113172279072358305645",
// "hamza ayed",
// "rlMbi4Hc8L1STMPE99iPKqK4Gddwv8r9qZOCadsz9qTEJZ6KLEE9ruTJI6N8dKfK4CXez5pme5WIs14-1QGo29s07fQOniZgIlJV5XFL3yqzPRSUmn3",
// "+201023248456",
// "1 min",
// "1 m",
// "false",
// "QwUMoyUtZ0J3oR6yXKUavrB_gBl9npUZe-qZtax-Raq4QBbdKv0AmtLKm0BfBd6N_592HBv4CVa41ii4122W3hr-BCUKKzJhzZcK8m0YjbWbtpvgJRD8uD_nuMk9",
// "0",
// "238",
// "false",
// "114243034311436865474",
// "1488",
// "startEnd",
// "30.049307749732176,31.274291574954987",
// "",
// "",
// "",
// "",
// "17.73",
// "0",
// "hamzaayedflutter@gmail.com",
// "الفسطاط، حي مصر القديمة، مصر",
// " الزاوية الحمراء، محافظة القاهرة، مصر",
// "Speed",
// "8",
// "5.00"
// ];
// FirebaseMessagesController()
// .sendNotificationToAnyWithoutData(
// 'Cancel'.tr,
// "How much longer will you be?".tr,
// 'fKBBB4_1R0q18-byySHUeG:APA91bHk2RmjjMt6eKr7KQnqh4CK02yW3H5E8g_beVcQFgiCG50j9KCtSU1O8PtvS_gA5xuJLhaorDV9AeslcyLFJFf302tICKMiKgsDP5pWkF5WXNw0-4NsoD-BnJxf0-Do9Vs1Zbpq',
// // d,
// 'ding.wav',
// );
// Get.to(SmsSignupEgypt());
// Log.print(
// 'getUpdatedRideForDriverApply: ${Get.find<MapPassengerController>().driverToken}');
// Get.find<MapPassengerController>()
// .firstTimeRunToGetCoupon('SEFER25', '1 WEEEK', '25%');
// },
// icon: const Icon(
// Icons.chat,

View File

@@ -1,3 +1,4 @@
import 'package:SEFER/views/home/HomePage/contact_us.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_font_icons/flutter_font_icons.dart';
@@ -110,10 +111,10 @@ class MapMenuWidget extends StatelessWidget {
),
IconMainPageMap(
onTap: () {
Get.to(() => const TaarifPage());
Get.to(() => ContactUsPage());
},
title: 'Tariff'.tr,
icon: Icons.money,
title: "Contact Us".tr,
icon: Icons.contact_page,
),
],
),

View File

@@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../../constant/api_key.dart';
import '../../../constant/links.dart';
class CupertinoDriverListWidget extends StatelessWidget {
MapPassengerController mapPassengerController =
@@ -30,9 +31,39 @@ class CupertinoDriverListWidget extends StatelessWidget {
leading: CircleAvatar(
radius: 25,
backgroundImage: NetworkImage(
'${AK.serverPHP}/portrate_captain_image/${driver['id']}.jpg',
'${AppLink.seferCairoServer}/portrate_captain_image/${driver['id']}.jpg',
),
child: Builder(
builder: (context) {
return Image.network(
'${AppLink.seferCairoServer}/portrate_captain_image/${driver['id']}.jpg',
fit: BoxFit.cover,
loadingBuilder: (BuildContext context, Widget child,
ImageChunkEvent? loadingProgress) {
if (loadingProgress == null) {
return child; // Image is loaded
} else {
return Center(
child: CircularProgressIndicator(
value: loadingProgress.expectedTotalBytes != null
? loadingProgress.cumulativeBytesLoaded /
(loadingProgress.expectedTotalBytes ?? 1)
: null,
),
);
}
},
errorBuilder: (BuildContext context, Object error,
StackTrace? stackTrace) {
return const Icon(
Icons.person, // Icon to show when image fails to load
size: 25, // Adjust the size as needed
color: AppColor.blueColor, // Color for the error icon
);
},
);
},
),
backgroundColor: CupertinoColors.systemGrey5,
),
title: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -65,12 +96,12 @@ class CupertinoDriverListWidget extends StatelessWidget {
Text('${'Plate'.tr}: ${driver['car_plate']}'),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('${'Education'.tr}: ${driver['education']}'),
],
),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Text('${'Education'.tr}: ${driver['education']}'),
// ],
// ),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [