import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; import 'package:ride/constant/info.dart'; import 'package:ride/controller/payment/payment_controller.dart'; import 'package:ride/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: 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( '${'Your Ride Duration is '.tr}${controller.duration} minutes', style: AppStyle.subtitle, ), Text( '${'You will be thier in'.tr} ${DateFormat('h:mm a').format(controller.newTime)}', style: AppStyle.subtitle, ), Text( '${'You trip distance is'.tr} ${controller.distance} 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: [ 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(); 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: [ // TextButton( // onPressed: () { // 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(), // ) // ], // ), // ); // }, // child: Row( // mainAxisAlignment: // MainAxisAlignment // .spaceBetween, // children: [ // Text('How Many Passengers?'.tr, // style: AppStyle.title), // const SizedBox( // width: 10, // ), // Container( // decoration: BoxDecoration( // border: Border.all()), // child: Padding( // padding: // const EdgeInsets.all( // 3.0), // child: Text( // controller // .selectedPassengerCount // .toString(), // style: AppStyle.title), // ), // ), // ], // ), // ), 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.cost.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, ), ], )); } }