import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:ride/constant/box_name.dart'; import 'package:ride/constant/colors.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/links.dart'; import '../../../constant/style.dart'; import '../../../controller/functions/crud.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: 6, left: 8, child: AnimatedContainer( duration: const Duration(milliseconds: 300), height: controller.passengerInfoWindow, width: Get.width * .8, decoration: AppStyle.boxDecoration, child: Padding( padding: const EdgeInsets.all(8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ DefaultTextStyle( style: AppStyle.title, child: 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.toString() + ' ' + 'Minute'.tr, style: AppStyle.title), ], ), Row( children: [ Text('Distance of the Ride is '.tr, style: AppStyle.title), Text( controller.distance.toString() + ' ' + '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 ${box.read(BoxName.nameDriver)}'); }, icon: const Icon( Icons.whatshot, color: AppColor.greenColor, )), IconButton( onPressed: () { launchCommunication( 'sms', controller.phone.toString(), 'Hello this is Captain ${box.read(BoxName.nameDriver)}'); }, icon: const Icon( Icons.sms_rounded, color: AppColor.blueColor, )), IconButton( onPressed: () { launchCommunication( 'email', controller.phone.toString(), 'Hello this is Captain ${box.read(BoxName.nameDriver)}'); }, icon: const Icon( Icons.email, color: AppColor.redColor, )), IconButton( onPressed: () => FirebaseMessagesController() .sendNotificationToPassengerToken( 'Hi', 'body', controller.tokenPassenger, []), icon: const Icon(Icons.notification_add)) ], ), 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() : MyElevatedButton( title: 'Start the Ride'.tr, kolor: AppColor.greenColor, onPressed: () { controller.startRideFromDriver(); }), ], ), ), ), ), ], ) : 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(), ); } }