import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:ride/constant/box_name.dart'; import 'package:ride/constant/style.dart'; import 'package:ride/controller/home/map_passenger_controller.dart'; import 'package:ride/main.dart'; import 'package:ride/views/home/map_widget.dart/form_search_places.dart'; import 'package:ride/views/widgets/elevated_btn.dart'; import '../../../constant/colors.dart'; import '../../../constant/table_names.dart'; import '../../../controller/functions/toast.dart'; import 'form_search_start.dart'; class MainBottomMenuMap extends StatelessWidget { const MainBottomMenuMap({super.key}); @override Widget build(BuildContext context) { Get.put(MapPassengerController()); return GetBuilder( builder: (controller) => Positioned( bottom: 3, left: 5, right: 5, child: AnimatedContainer( duration: const Duration(milliseconds: 400), height: controller.mainBottomMenuMap, decoration: const BoxDecoration( boxShadow: [ BoxShadow( color: AppColor.accentColor, offset: Offset(2, 2)), BoxShadow( color: AppColor.accentColor, offset: Offset(-2, -2)) ], color: AppColor.secondaryColor, borderRadius: BorderRadius.only( topLeft: Radius.circular(15), topRight: Radius.circular(15), )), child: SingleChildScrollView( child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.all(15), child: InkWell( onTap: () => controller.changeMainBottomMenuMap(), child: Container( width: Get.width * .8, height: Get.height * .1, decoration: const BoxDecoration( boxShadow: [ BoxShadow( color: AppColor.accentColor, blurRadius: 5, offset: Offset(2, 4)), BoxShadow( color: AppColor.accentColor, blurRadius: 5, offset: Offset(-2, -2)) ], color: AppColor.secondaryColor, borderRadius: BorderRadius.all( Radius.elliptical(15, 30), ), ), child: DefaultTextStyle( style: AppStyle.title, child: Center( child: controller.isPickerShown ? TextButton( onPressed: () async { controller.clearPolyline(); controller.data = []; if (controller .startLocationFromMap == true) { controller.newMyLocation = controller .newStartPointLocation; controller.startLocationFromMap = false; controller.isPickerShown = false; // print(controller.myLocation); // print(controller // .newStartPointLocation); } else { controller.newMyLocation = controller.newMyLocation; controller.isPickerShown = false; // print(controller.myLocation); // print(controller.newMyLocation); } // await controller.getMap( // '${controller.myLocation.latitude},${controller.myLocation.longitude}', // '${controller.newMyLocation.latitude},${controller.newMyLocation.longitude}', // ); controller.placesDestination = []; controller .placeDestinationController .clear(); controller.showBottomSheet1(); Get.back(); controller.showBottomSheet1(); controller .changeMainBottomMenuMap(); }, child: Row( children: [ IconButton( onPressed: () { controller .changeMainBottomMenuMap(); }, icon: controller .isMainBottomMenuMap ? const Icon( Icons .arrow_circle_up_rounded, size: 35, ) : const Icon( Icons .arrow_circle_down_rounded, size: 35, ), ), Text( "Click here point".tr, style: AppStyle.title, ), ], ), ) : Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( height: 30, child: Row( children: [ IconButton( onPressed: () { controller .changeMainBottomMenuMap(); }, icon: controller .isMainBottomMenuMap ? const Icon( Icons .arrow_circle_up_rounded, size: 35, ) : const Icon( Icons .arrow_circle_down_rounded, size: 35, ), ), Text( '${'Where to'.tr} ${box.read(BoxName.name)}'), ], )), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ const SizedBox( width: 10, ), controller.noCarString == false ? Text( 'Nearest Car for you about ' .tr) : Container( decoration: BoxDecoration( borderRadius: BorderRadius .circular(12), color: AppColor.redColor, ), child: Padding( padding: const EdgeInsets .all(6), child: Text( 'No Car in your site. Sorry!' .tr, style: AppStyle .title .copyWith( color: AppColor .secondaryColor), ), ), ), controller.noCarString == false ? Container( decoration: BoxDecoration( border: Border.all( color: AppColor .redColor, width: 3)), child: Padding( padding: const EdgeInsets .all(4), child: Text((controller .nearestCar != null ? controller .durationByPassenger .toString() : 'N/A')), ), ) : const SizedBox(), ], ) ], ), ), )), ), ), controller.isMainBottomMenuMap ? const FavioratePlacesDialogu() : const SizedBox(), controller.isMainBottomMenuMap ? const SizedBox() : InkWell( onTap: () async { controller.getCurrentLocationFormString(); }, child: Text( 'From : ${controller.currentLocationString}'.tr, style: AppStyle.subtitle, ), ), controller.isMainBottomMenuMap ? const SizedBox() : Column( children: [ controller.currentLocationToFormPlaces ? const SizedBox() : formSearchPlacesStart(), formSearchPlaces(), const SizedBox( height: 30, ), MyElevatedButton( title: 'Go to Ride', onPressed: () async { controller.changeMainBottomMenuMap(); await controller.getMap( '${controller.newStartPointLocation.latitude},${controller.newStartPointLocation.longitude}', '${controller.newMyLocation.latitude},${controller.newMyLocation.longitude}', ); controller.currentLocationToFormPlaces = false; controller.placesDestination = []; controller.clearPlacesStart(); controller.clearPlacesDestination(); controller.showBottomSheet1(); Get.back(); controller.showBottomSheet1(); }) ], ) ], ), ), ), )); } } class FavioratePlacesDialogu extends StatelessWidget { const FavioratePlacesDialogu({ super.key, }); @override Widget build(BuildContext context) { Get.put(MapPassengerController()); return GetBuilder( builder: (controller) => DefaultTextStyle( style: AppStyle.title, child: Center( child: InkWell( onTap: () async { List favoritePlaces = await sql.getAllData(TableName.placesFavorite); // print(favoritePlaces); Get.defaultDialog( title: 'Favorite Places'.tr, content: SizedBox( width: Get.width * .8, height: 300, child: favoritePlaces.isEmpty ? Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Icon( Icons.hourglass_empty_rounded, size: 99, color: AppColor.primaryColor, ), Text( 'You Dont Have Any places yet !'.tr, style: AppStyle.title, ), ], ), ) : ListView.builder( itemCount: favoritePlaces.length, itemBuilder: (BuildContext context, int index) { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ TextButton( onPressed: () async { Get.back(); await controller.getLocation(); await controller.getMap( '${controller.myLocation.latitude},${controller.myLocation.longitude}', '${favoritePlaces[index]['latitude']},${favoritePlaces[index]['longitude']}', ); // controller.changePickerShown(); controller.showBottomSheet1(); controller.showBottomSheet1(); }, child: Text( favoritePlaces[index]['name'], style: AppStyle.title, ), ), IconButton( onPressed: () async { await sql.deleteData( TableName.placesFavorite, favoritePlaces[index]['id']); Get.back(); // ignore: use_build_context_synchronously Toast.show( context, '${'You are Delete'.tr} ${favoritePlaces[index]['name']} from your list', AppColor.redColor); // Get.snackbar('Deleted'.tr, // '${'You are Delete'.tr} ${favoritePlaces[index]['name']} from your list', // backgroundColor: // AppColor.accentColor); }, icon: const Icon(Icons.favorite_outlined), ), ], ); }, ), ), cancel: MyElevatedButton( title: 'Back'.tr, onPressed: () => Get.back()), ); }, child: Text( '\u{1F3D8} ' 'Favorite Places'.tr, style: AppStyle.title, ), )), )); } }