Update: 2026-06-11 18:22:57
This commit is contained in:
572
bottomsheet.diff
Normal file
572
bottomsheet.diff
Normal file
@@ -0,0 +1,572 @@
|
||||
commit d8901e1a879f696e512e13d389d666baae33dc84
|
||||
Author: Hamza-Ayed <hamzaayedflutter@gmail.com>
|
||||
Date: Tue Jun 9 08:40:31 2026 +0300
|
||||
|
||||
first commit
|
||||
|
||||
diff --git a/siro_rider/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart b/siro_rider/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart
|
||||
new file mode 100644
|
||||
index 0000000..c3dee90
|
||||
--- /dev/null
|
||||
+++ b/siro_rider/lib/views/home/map_widget.dart/buttom_sheet_map_show.dart
|
||||
@@ -0,0 +1,560 @@
|
||||
+import 'package:flutter/material.dart';
|
||||
+import 'package:get/get.dart';
|
||||
+import 'package:siro_rider/controller/payment/payment_controller.dart';
|
||||
+
|
||||
+import '../../../constant/style.dart';
|
||||
+import '../../../controller/home/map/ride_lifecycle_controller.dart';
|
||||
+
|
||||
+GetBuilder<RideLifecycleController> buttomSheetMapPage() {
|
||||
+ Get.put(PaymentController());
|
||||
+ return GetBuilder<RideLifecycleController>(
|
||||
+ builder: (controller) =>
|
||||
+ controller.isBottomSheetShown && controller.rideConfirm == false
|
||||
+ ? const Positioned(
|
||||
+ left: 5,
|
||||
+ bottom: 0,
|
||||
+ right: 5,
|
||||
+ child: Column(
|
||||
+ // children: [
|
||||
+ // Row(
|
||||
+ // mainAxisAlignment: MainAxisAlignment.end,
|
||||
+ // children: [
|
||||
+ // double.parse(box.read(BoxName.passengerWalletTotal)) <
|
||||
+ // 0 &&
|
||||
+ // controller.data.isNotEmpty
|
||||
+ // ? Container(
|
||||
+ // decoration: AppStyle.boxDecoration
|
||||
+ // .copyWith(color: AppColor.redColor),
|
||||
+ // height: 50,
|
||||
+ // width: Get.width * .94,
|
||||
+ // child: Padding(
|
||||
+ // padding:
|
||||
+ // const EdgeInsets.symmetric(horizontal: 8),
|
||||
+ // child: Text(
|
||||
+ // 'Your trip cost is'.tr +
|
||||
+ // ' ${controller.totalCostPassenger.toStringAsFixed(2)} '
|
||||
+ // 'But you have a negative salary of'
|
||||
+ // .tr +
|
||||
+ // '${double.parse(box.read(BoxName.passengerWalletTotal)).toStringAsFixed(2)}'
|
||||
+ // ' in your'
|
||||
+ // .tr +
|
||||
+ // ' ${AppInformation.appName}'
|
||||
+ // ' wallet due to a previous trip.'
|
||||
+ // .tr,
|
||||
+ // style: AppStyle.subtitle,
|
||||
+ // ),
|
||||
+ // ))
|
||||
+ // : const SizedBox(),
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // const SizedBox(
|
||||
+ // height: 5,
|
||||
+ // ),
|
||||
+ // AnimatedContainer(
|
||||
+ // // clipBehavior: Clip.antiAliasWithSaveLayer,
|
||||
+ // curve: Curves.easeInCirc,
|
||||
+ // onEnd: () {
|
||||
+ // controller.height = 250;
|
||||
+ // },
|
||||
+ // height: controller.heightBottomSheetShown,
|
||||
+ // duration: const Duration(seconds: 2),
|
||||
+ // child: Column(
|
||||
+ // children: [
|
||||
+ // controller.data.isEmpty
|
||||
+ // ? const SizedBox()
|
||||
+ // : Container(
|
||||
+ // // width: Get.width * .9,
|
||||
+ // height: 100,
|
||||
+ // decoration: BoxDecoration(
|
||||
+ // color: AppColor.secondaryColor,
|
||||
+ // boxShadow: [
|
||||
+ // const BoxShadow(
|
||||
+ // color: AppColor.accentColor,
|
||||
+ // offset: Offset(2, 2)),
|
||||
+ // BoxShadow(
|
||||
+ // color: AppColor.accentColor
|
||||
+ // .withOpacity(.4),
|
||||
+ // offset: const Offset(-2, -2))
|
||||
+ // ],
|
||||
+ // borderRadius: const BorderRadius.all(
|
||||
+ // Radius.circular(15))),
|
||||
+ // child: ListView.builder(
|
||||
+ // scrollDirection: Axis.horizontal,
|
||||
+ // itemCount: controller
|
||||
+ // .dataCarsLocationByPassenger.length -
|
||||
+ // 1,
|
||||
+ // itemBuilder:
|
||||
+ // (BuildContext context, int index) {
|
||||
+ // return Container(
|
||||
+ // color: controller.gender == 'Female'
|
||||
+ // ? const Color.fromARGB(
|
||||
+ // 255, 246, 52, 181)
|
||||
+ // : AppColor.secondaryColor,
|
||||
+ // width: Get.width,
|
||||
+ // child: Row(
|
||||
+ // mainAxisAlignment:
|
||||
+ // MainAxisAlignment.spaceBetween,
|
||||
+ // children: [
|
||||
+ // SizedBox(
|
||||
+ // width: Get.width * .15,
|
||||
+ // child: Padding(
|
||||
+ // padding:
|
||||
+ // const EdgeInsets.all(8.0),
|
||||
+ // child: Image.asset(
|
||||
+ // 'assets/images/jeep.png',
|
||||
+ // width: 50,
|
||||
+ // fit: BoxFit.fill,
|
||||
+ // repeat: ImageRepeat.repeatX,
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // SizedBox(
|
||||
+ // width: Get.width * .55,
|
||||
+ // child: Column(
|
||||
+ // crossAxisAlignment:
|
||||
+ // CrossAxisAlignment.start,
|
||||
+ // mainAxisAlignment:
|
||||
+ // MainAxisAlignment.spaceEvenly,
|
||||
+ // children: [
|
||||
+ // Text(
|
||||
+ // controller.hours > 0
|
||||
+ // ? '${'Your Ride Duration is '.tr}${controller.hours} ${'H and'.tr} ${controller.minutes} ${'m'.tr}'
|
||||
+ // : '${'Your Ride Duration is '.tr} ${controller.minutes} m',
|
||||
+ // style: AppStyle.subtitle,
|
||||
+ // ),
|
||||
+ // // Text(
|
||||
+ // // '${'You will be thier in'.tr} ${DateFormat('h:mm a').format(controller.newTime)}',
|
||||
+ // // style: AppStyle.subtitle,
|
||||
+ // // ),
|
||||
+ // Text(
|
||||
+ // '${'Your trip distance is'.tr} ${controller.distance.toStringAsFixed(2)} ${'KM'.tr}',
|
||||
+ // style: AppStyle.subtitle,
|
||||
+ // )
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // SizedBox(
|
||||
+ // width: Get.width * .2,
|
||||
+ // child: Padding(
|
||||
+ // padding: const EdgeInsets.only(
|
||||
+ // right: 5, left: 5),
|
||||
+ // child: Column(
|
||||
+ // crossAxisAlignment:
|
||||
+ // CrossAxisAlignment.center,
|
||||
+ // children: [
|
||||
+ // Container(
|
||||
+ // width: Get.width * .14,
|
||||
+ // height: Get.height * .06,
|
||||
+ // decoration: BoxDecoration(
|
||||
+ // color: AppColor
|
||||
+ // .secondaryColor,
|
||||
+ // shape:
|
||||
+ // BoxShape.rectangle,
|
||||
+ // border: Border.all(
|
||||
+ // width: 2,
|
||||
+ // color: AppColor
|
||||
+ // .greenColor)),
|
||||
+ // child: Center(
|
||||
+ // child: Text(
|
||||
+ // '${'Fee is'.tr} \n${controller.totalPassenger.toStringAsFixed(2)}',
|
||||
+ // style:
|
||||
+ // AppStyle.subtitle,
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // controller.promoTaken
|
||||
+ // ? const Icon(
|
||||
+ // Icons
|
||||
+ // .filter_vintage_rounded,
|
||||
+ // color:
|
||||
+ // AppColor.redColor,
|
||||
+ // )
|
||||
+ // : const SizedBox(
|
||||
+ // height: 0,
|
||||
+ // )
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // );
|
||||
+ // },
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // const SizedBox(
|
||||
+ // height: 5,
|
||||
+ // ),
|
||||
+ // Container(
|
||||
+ // // height: 130,
|
||||
+ // decoration: BoxDecoration(
|
||||
+ // color: AppColor.secondaryColor,
|
||||
+ // boxShadow: [
|
||||
+ // const BoxShadow(
|
||||
+ // color: AppColor.accentColor,
|
||||
+ // offset: Offset(2, 2)),
|
||||
+ // BoxShadow(
|
||||
+ // color: AppColor.accentColor.withOpacity(.4),
|
||||
+ // offset: const Offset(-2, -2))
|
||||
+ // ],
|
||||
+ // borderRadius:
|
||||
+ // const BorderRadius.all(Radius.circular(15))),
|
||||
+ // child: controller.data.isEmpty
|
||||
+ // ? const SizedBox()
|
||||
+ // : Center(
|
||||
+ // child: Padding(
|
||||
+ // padding: const EdgeInsets.symmetric(
|
||||
+ // horizontal: 5),
|
||||
+ // child: Column(
|
||||
+ // children: [
|
||||
+ // Row(
|
||||
+ // children: [
|
||||
+ // const Icon(
|
||||
+ // Icons.location_on,
|
||||
+ // color: AppColor.redColor,
|
||||
+ // ),
|
||||
+ // const SizedBox(
|
||||
+ // width: 10,
|
||||
+ // ),
|
||||
+ // Text(
|
||||
+ // 'From : '.tr,
|
||||
+ // style: AppStyle.subtitle,
|
||||
+ // ),
|
||||
+ // Text(
|
||||
+ // controller.data[0]
|
||||
+ // ['start_address']
|
||||
+ // .toString(),
|
||||
+ // style: AppStyle.subtitle,
|
||||
+ // )
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // Row(
|
||||
+ // children: [
|
||||
+ // const Icon(Icons
|
||||
+ // .location_searching_rounded),
|
||||
+ // const SizedBox(
|
||||
+ // width: 10,
|
||||
+ // ),
|
||||
+ // Text(
|
||||
+ // 'To : '.tr,
|
||||
+ // style: AppStyle.subtitle,
|
||||
+ // ),
|
||||
+ // Text(
|
||||
+ // controller.data[0]['end_address'],
|
||||
+ // style: AppStyle.subtitle,
|
||||
+ // ),
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // const Divider(
|
||||
+ // color: AppColor.accentColor,
|
||||
+ // thickness: 1,
|
||||
+ // height: 2,
|
||||
+ // indent: 1,
|
||||
+ // ),
|
||||
+ // SizedBox(
|
||||
+ // height: 40,
|
||||
+ // child: Row(
|
||||
+ // mainAxisAlignment:
|
||||
+ // MainAxisAlignment.center,
|
||||
+ // children: [
|
||||
+ // Container(
|
||||
+ // decoration: BoxDecoration(
|
||||
+ // color:
|
||||
+ // AppColor.secondaryColor,
|
||||
+ // borderRadius:
|
||||
+ // BorderRadius.circular(12),
|
||||
+ // // border: Border.all(),
|
||||
+ // ),
|
||||
+ // child: Row(
|
||||
+ // children: [
|
||||
+ // Icon(
|
||||
+ // Icons.monetization_on,
|
||||
+ // color: Colors.green[400],
|
||||
+ // ),
|
||||
+ // InkWell(
|
||||
+ // onTap: () async {
|
||||
+ // controller
|
||||
+ // .changeCashConfirmPageShown();
|
||||
+ // Get.find<
|
||||
+ // PaymentController>()
|
||||
+ // .getPassengerWallet();
|
||||
+ // },
|
||||
+ // child: GetBuilder<
|
||||
+ // PaymentController>(
|
||||
+ // builder: (paymentController) =>
|
||||
+ // paymentController
|
||||
+ // .isCashChecked
|
||||
+ // ? Text(
|
||||
+ // 'CASH',
|
||||
+ // style: AppStyle
|
||||
+ // .title,
|
||||
+ // )
|
||||
+ // : Text(
|
||||
+ // '${AppInformation.appName} Wallet',
|
||||
+ // style: AppStyle
|
||||
+ // .title,
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // const SizedBox(
|
||||
+ // width: 40,
|
||||
+ // ),
|
||||
+ // GetBuilder<PaymentController>(
|
||||
+ // builder:
|
||||
+ // (paymentController) =>
|
||||
+ // Container(
|
||||
+ // decoration:
|
||||
+ // BoxDecoration(
|
||||
+ // color: AppColor
|
||||
+ // .secondaryColor,
|
||||
+ // borderRadius:
|
||||
+ // BorderRadius
|
||||
+ // .circular(
|
||||
+ // 12),
|
||||
+ // ),
|
||||
+ // child: Row(
|
||||
+ // children: [
|
||||
+ // Icon(
|
||||
+ // Icons
|
||||
+ // .qr_code_2_rounded,
|
||||
+ // color: Colors
|
||||
+ // .green[
|
||||
+ // 400],
|
||||
+ // ),
|
||||
+ // InkWell(
|
||||
+ // onTap: () {
|
||||
+ // if (controller
|
||||
+ // .promoTaken ==
|
||||
+ // false) {
|
||||
+ // Get.defaultDialog(
|
||||
+ // title: 'Add Promo'.tr,
|
||||
+ // titleStyle: AppStyle.title,
|
||||
+ // content: Column(
|
||||
+ // children: [
|
||||
+ // SizedBox(
|
||||
+ // width: Get.width * .7,
|
||||
+ // child: TextFormField(
|
||||
+ // controller: controller.promo,
|
||||
+ // decoration: InputDecoration(
|
||||
+ // labelText: 'Promo Code'.tr,
|
||||
+ // hintText: 'Enter promo code'.tr,
|
||||
+ // labelStyle: AppStyle.subtitle,
|
||||
+ // hintStyle: AppStyle.subtitle,
|
||||
+ // border: OutlineInputBorder(
|
||||
+ // borderRadius: BorderRadius.circular(10),
|
||||
+ // ),
|
||||
+ // filled: true,
|
||||
+ // fillColor: Colors.grey[200],
|
||||
+ // focusedBorder: OutlineInputBorder(
|
||||
+ // borderSide: const BorderSide(
|
||||
+ // color: AppColor.primaryColor,
|
||||
+ // width: 2.0,
|
||||
+ // ),
|
||||
+ // borderRadius: BorderRadius.circular(10),
|
||||
+ // ),
|
||||
+ // errorBorder: OutlineInputBorder(
|
||||
+ // borderSide: const BorderSide(
|
||||
+ // color: Colors.red,
|
||||
+ // width: 2.0,
|
||||
+ // ),
|
||||
+ // borderRadius: BorderRadius.circular(10),
|
||||
+ // ),
|
||||
+ // enabledBorder: OutlineInputBorder(
|
||||
+ // borderSide: const BorderSide(
|
||||
+ // color: Colors.grey,
|
||||
+ // width: 1.0,
|
||||
+ // ),
|
||||
+ // borderRadius: BorderRadius.circular(10),
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // MyElevatedButton(
|
||||
+ // title: 'Add Promo'.tr,
|
||||
+ // onPressed: () async {
|
||||
+ // controller.applyPromoCodeToPassenger();
|
||||
+ // },
|
||||
+ // )
|
||||
+ // ],
|
||||
+ // ));
|
||||
+ // } else {
|
||||
+ // Get.snackbar(
|
||||
+ // 'You have promo!'
|
||||
+ // .tr,
|
||||
+ // '',
|
||||
+ // backgroundColor:
|
||||
+ // AppColor.redColor);
|
||||
+ // }
|
||||
+ // },
|
||||
+ // child: Text(
|
||||
+ // 'Add Promo'
|
||||
+ // .tr,
|
||||
+ // style: AppStyle
|
||||
+ // .title,
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // )),
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // SizedBox(
|
||||
+ // width: Get.width * .95,
|
||||
+ // child: Row(
|
||||
+ // mainAxisAlignment:
|
||||
+ // MainAxisAlignment.center,
|
||||
+ // children: [
|
||||
+ // controller.isCashSelectedBeforeConfirmRide ==
|
||||
+ // false
|
||||
+ // ? MyElevatedButton(
|
||||
+ // title: 'Next'.tr,
|
||||
+ // onPressed: () {
|
||||
+ // controller
|
||||
+ // .changeCashConfirmPageShown();
|
||||
+ // },
|
||||
+ // )
|
||||
+ // :
|
||||
+ // // controller.isPassengerChosen ==
|
||||
+ // // false
|
||||
+ // // ? MyElevatedButton(
|
||||
+ // // title: 'Next'.tr,
|
||||
+ // // onPressed: () {
|
||||
+ // // controller
|
||||
+ // // .onChangedPassengersChoose();
|
||||
+ // // Get.defaultDialog(
|
||||
+ // // barrierDismissible:
|
||||
+ // // false,
|
||||
+ // // title:
|
||||
+ // // 'How Many Passengers?'
|
||||
+ // // .tr,
|
||||
+ // // titleStyle:
|
||||
+ // // AppStyle
|
||||
+ // // .title,
|
||||
+ // // content:
|
||||
+ // // Column(
|
||||
+ // // children: [
|
||||
+ // // Text(
|
||||
+ // // 'Allowed up to 4 Passengers.'
|
||||
+ // // .tr,
|
||||
+ // // style: AppStyle
|
||||
+ // // .title,
|
||||
+ // // ),
|
||||
+ // // SizedBox(
|
||||
+ // // height:
|
||||
+ // // 200, // Set the desired height here
|
||||
+ // // child:
|
||||
+ // // CupertinoPicker(
|
||||
+ // // itemExtent:
|
||||
+ // // 32,
|
||||
+ // // onSelectedItemChanged:
|
||||
+ // // (index) {
|
||||
+ // // controller.onChangedPassengerCount(index +
|
||||
+ // // 1);
|
||||
+ // // },
|
||||
+ // // children: [
|
||||
+ // // Text('1 Passenger'.tr),
|
||||
+ // // Text('2 Passengers'.tr),
|
||||
+ // // Text('3 Passengers'.tr),
|
||||
+ // // Text('4 Passengers'.tr),
|
||||
+ // // ],
|
||||
+ // // ),
|
||||
+ // // ),
|
||||
+ // // MyElevatedButton(
|
||||
+ // // title:
|
||||
+ // // 'Back',
|
||||
+ // // onPressed:
|
||||
+ // // () =>
|
||||
+ // // Get.back(),
|
||||
+ // // )
|
||||
+ // // ],
|
||||
+ // // ),
|
||||
+ // // );
|
||||
+ // // },
|
||||
+ // // )
|
||||
+ // // :
|
||||
+ // MyElevatedButton(
|
||||
+ // title: 'Confirm Selection'
|
||||
+ // .tr,
|
||||
+ // onPressed: () {
|
||||
+ // controller
|
||||
+ // .confirmRideForFirstDriver();
|
||||
+ // },
|
||||
+ // ),
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // )
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ],
|
||||
+ // ),
|
||||
+ // ),
|
||||
+ // ],
|
||||
+ ),
|
||||
+ )
|
||||
+ : const SizedBox());
|
||||
+}
|
||||
+
|
||||
+class Details extends StatelessWidget {
|
||||
+ const Details({
|
||||
+ super.key,
|
||||
+ });
|
||||
+
|
||||
+ @override
|
||||
+ Widget build(BuildContext context) {
|
||||
+ return GetBuilder<RideLifecycleController>(
|
||||
+ builder: (controller) => Column(
|
||||
+ children: [
|
||||
+ Row(
|
||||
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||
+ children: [
|
||||
+ Text(
|
||||
+ '${'Distance is'.tr} ${controller.distance.toStringAsFixed(2)} KM',
|
||||
+ style: AppStyle.title,
|
||||
+ ),
|
||||
+ Text(
|
||||
+ '${'Duration is'.tr} ${controller.data[0]['duration']['text']}',
|
||||
+ style: AppStyle.title,
|
||||
+ ),
|
||||
+ ],
|
||||
+ ),
|
||||
+ Row(
|
||||
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||
+ children: [
|
||||
+ Text(
|
||||
+ 'Cost for .21/km ${controller.costDistance.toStringAsFixed(2)} ',
|
||||
+ style: AppStyle.title,
|
||||
+ ),
|
||||
+ Text(
|
||||
+ '${'Cost Duration'.tr} ${controller.averageDuration.toStringAsFixed(2)} is ${controller.costDuration.toStringAsFixed(2)} ',
|
||||
+ style: AppStyle.title,
|
||||
+ ),
|
||||
+ ],
|
||||
+ ),
|
||||
+ Row(
|
||||
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||
+ children: [
|
||||
+ Text(
|
||||
+ 'Total Driver ${controller.totalDriver.toStringAsFixed(2)}',
|
||||
+ style: AppStyle.title,
|
||||
+ ),
|
||||
+ Text(
|
||||
+ 'totaME ${controller.totalME.toStringAsFixed(2)} ',
|
||||
+ style: AppStyle.title,
|
||||
+ ),
|
||||
+ ],
|
||||
+ ),
|
||||
+ Text(
|
||||
+ 'Cost for passenger ${controller.totalPassenger.toStringAsFixed(2)} ',
|
||||
+ style: AppStyle.title,
|
||||
+ ),
|
||||
+ ],
|
||||
+ ));
|
||||
+ }
|
||||
+}
|
||||
Reference in New Issue
Block a user