import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:flutter/material.dart'; import 'package:flutter_font_icons/flutter_font_icons.dart'; import 'package:get/get.dart'; import 'package:ride/constant/box_name.dart'; import 'package:ride/constant/colors.dart'; import 'package:ride/constant/info.dart'; import 'package:ride/controller/firebase/firbase_messge.dart'; import 'package:ride/controller/home/captin/map_driver_controller.dart'; import 'package:ride/main.dart'; import 'package:ride/views/widgets/elevated_btn.dart'; import '../../../../constant/style.dart'; import '../../../../controller/functions/launch.dart'; class PassengerInfoWindow extends StatelessWidget { const PassengerInfoWindow({ super.key, }); @override Widget build(BuildContext context) { Get.put(MapDriverController()); return GetBuilder( builder: (controller) => controller.isPassengerInfoWindow == true ? Stack( children: [ Positioned( bottom: 50, // left: 8, child: AnimatedContainer( duration: const Duration(milliseconds: 300), height: controller.passengerInfoWindow, width: Get.width * .96, decoration: AppStyle.boxDecoration, child: Padding( padding: const EdgeInsets.all(8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ DefaultTextStyle( style: AppStyle.title, child: Text( 'Go to passenger Location now'.tr, style: AppStyle.title .copyWith(color: AppColor.greenColor), ) // AnimatedTextKit( // animatedTexts: [ // ScaleAnimatedText( // 'Go to passenger Location now'.tr, // ), // WavyAnimatedText( // 'Go to passenger Location now'.tr), // FlickerAnimatedText( // 'Go to passenger Location now'.tr), // WavyAnimatedText( // 'Go to passenger Location now'.tr), // ], // isRepeatingAnimation: true, // onTap: () { // // print("Tap Event"); // }, // ), ), Row( children: [ Text('Duration of the Ride is '.tr, style: AppStyle.title), Text('${controller.duration} ${'Minute'.tr}', style: AppStyle.title), ], ), Row( children: [ Text('Distance of the Ride is '.tr, style: AppStyle.title), Text( '${controller.distance} ${'KM'.tr}', style: AppStyle.title, ), ], ), Row( children: [ Text('Name of the Passenger is '.tr, style: AppStyle.title), Text( controller.name.toString(), style: AppStyle.title, ), ], ), controller.isRideBegin ? const SizedBox() : Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ IconButton( onPressed: () { launchCommunication('phone', controller.phone.toString(), ''); }, icon: const Icon( Icons.phone, color: AppColor.blueColor, )), IconButton( onPressed: () { launchCommunication( 'whatsapp', controller.phone.toString(), '${'Hello this is Captain'.tr} ${box.read(BoxName.nameDriver)}'); }, icon: const Icon( FontAwesome.whatsapp, color: AppColor.greenColor, )), IconButton( onPressed: () { launchCommunication( 'sms', controller.phone.toString(), '${'Hello this is Captain'.tr} ${box.read(BoxName.nameDriver)}'); }, icon: const Icon( Icons.sms_rounded, color: AppColor.blueColor, )), IconButton( onPressed: () { launchCommunication( 'email', controller.phone.toString(), '${'Hello this is Captain'.tr} ${box.read(BoxName.nameDriver)}'); }, icon: const Icon( Icons.email, color: AppColor.redColor, )), ], ), controller.remainingTimeToPassenger != 0 ? Stack( children: [ LinearProgressIndicator( backgroundColor: AppColor.accentColor, color: controller.remainingTimeToPassenger < 60 ? AppColor.redColor : AppColor.greenColor, minHeight: 50, borderRadius: BorderRadius.circular(15), value: controller.progressToPassenger .toDouble(), ), Center( child: Text( controller .stringRemainingTimeToPassenger, style: AppStyle.title, ), ) ], ) : controller.isRideBegin ? const SizedBox() : Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ MyElevatedButton( title: 'Start the Ride'.tr, kolor: AppColor.greenColor, onPressed: () { Get.defaultDialog( title: 'Is the Passenger in your Car ?' .tr, middleText: 'don\'t start trip if not ' .tr, confirm: MyElevatedButton( title: 'OK'.tr, onPressed: () { controller .startRideFromDriver(); Get.back(); }), cancel: MyElevatedButton( title: 'No ,still Waiting.' .tr, onPressed: () { Get.back(); })); }), controller.isArrivedSend ? MyElevatedButton( title: 'I arrive you'.tr, kolor: AppColor.yellowColor, onPressed: () { FirebaseMessagesController() .sendNotificationToPassengerToken( 'Hi ,I Arrive your site' .tr, 'I Arrive your site' .tr, controller .tokenPassenger, []); controller .startTimerToShowDriverWaitPassengerDuration(); controller.isArrivedSend = false; }) : const SizedBox() ], ), controller.remainingTimeInPassengerLocatioWait < 300 && controller.remainingTimeInPassengerLocatioWait != 0 ? Stack( children: [ LinearProgressIndicator( backgroundColor: AppColor.accentColor, color: controller .remainingTimeInPassengerLocatioWait < 60 ? AppColor.redColor : AppColor.greenColor, minHeight: 50, borderRadius: BorderRadius.circular( 15), value: controller .progressInPassengerLocationFromDriver .toDouble(), ), Center( child: Text( controller .stringRemainingTimeWaitingPassenger, style: AppStyle.title, ), ) ], ) : controller.isdriverWaitTimeEnd ? MyElevatedButton( title: 'You Can Cancel Trip And get Cost of Trip From ${AppInformation.appName}' .tr, kolor: AppColor .deepPurpleAccent, onPressed: () async { FirebaseMessagesController() .sendNotificationToPassengerToken( 'Driver Cancel Your Trip' .tr, 'You will be pay the cost to driver or we will get it from you on next trip' .tr, controller .tokenPassenger, []); await controller .addWaittingTimeCostFromPassengerToDriverWallet(); controller .isdriverWaitTimeEnd = false; }) : const SizedBox(), ], ), ], ), ), ), ), ], ) : controller.remainingTimeToShowPassengerInfoWindowFromDriver > 0 // ? Positioned( bottom: Get.height * .3, left: 15, child: Container( decoration: AppStyle.boxDecoration, child: Padding( padding: const EdgeInsets.all(8.0), child: Row( children: [ Stack( alignment: Alignment.center, children: [ const CircularProgressIndicator( backgroundColor: AppColor.redColor, strokeWidth: 10, color: AppColor.redColor, value: 1, ), CircularProgressIndicator( value: controller.progress, // Set the color based on the "isNearEnd" condition color: AppColor.yellowColor, ), Text( '${controller.remainingTimeToShowPassengerInfoWindowFromDriver}', style: AppStyle.number, ), ], ), const SizedBox( width: 10, ), Text( 'Please Wait If passenger want To Cancel!'.tr, style: AppStyle.title, ), ], ), ), ), ) : const SizedBox(), ); } }