import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/info.dart'; import 'package:SEFER/controller/payment/payment_controller.dart'; import 'package:SEFER/main.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import '../../../constant/colors.dart'; import '../../../constant/style.dart'; import '../../../controller/home/map_passenger_controller.dart'; GetBuilder buttomSheetMapPage() { Get.put(PaymentController()); return GetBuilder( builder: (controller) => controller.isBottomSheetShown && controller.rideConfirm == false ? 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.withOpacity(.5)), 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: 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 > 1 ? '${'Your Ride Duration is '.tr}${controller.hours} H and ${controller.minutes} m' : '${'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', 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( 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, content: Column( children: [ SizedBox( width: Get.width * .7, child: TextFormField( controller: controller.promo, decoration: InputDecoration( labelText: 'Promo Code'.tr, hintText: 'Enter promo code'.tr, 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 .changeConfirmRide(); }, ), ], ), ) ], ), ), ), ), ], ), ), ], ), ) : const SizedBox()); } class Details extends StatelessWidget { const Details({ super.key, }); @override Widget build(BuildContext context) { return GetBuilder( builder: (controller) => Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Text( '${'distance is'.tr} ${controller.data[0]['distance']['text']}', 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( 'costDuration ${controller.averageDuration.toStringAsFixed(2)} is ${controller.costDuration.toStringAsFixed(2)} ', style: AppStyle.title, ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Text( 'totalDriver ${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, ), ], )); } }