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/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';

class MainBottomMenuMap extends StatelessWidget {
  const MainBottomMenuMap({super.key});

  @override
  Widget build(BuildContext context) {
    Get.put(MapPassengerController());
    return GetBuilder<MapPassengerController>(
        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: 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: Column(
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  children: [
                                    SizedBox(
                                        height: 30,
                                        child: Text(
                                            '${'Where to'.tr} ${box.read(BoxName.name)}')
                                        // AnimatedTextKit(
                                        //   animatedTexts: [
                                        //     ScaleAnimatedText(
                                        //         '${'Where to'.tr} ${box.read(BoxName.name)}'),
                                        //     // WavyAnimatedText(
                                        //     //     '${'Where to'.tr} ${box.read(BoxName.name)}'),
                                        //     // FlickerAnimatedText(
                                        //     //     '${'Where to'.tr} ${box.read(BoxName.name)}'),
                                        //     // WavyAnimatedText(
                                        //     //     '${'Where to'.tr} ${box.read(BoxName.name)}'),
                                        //   ],
                                        //   isRepeatingAnimation: true,
                                        //   onTap: () {
                                        //     print("Tap Event");
                                        //   },
                                        // ),
                                        ),
                                    Row(
                                      mainAxisAlignment:
                                          MainAxisAlignment.center,
                                      children: [
                                        Text('Nearest Car for you about '.tr),
                                        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')),
                                          ),
                                        ),
                                      ],
                                    )
                                  ],
                                ),
                              ),
                            )),
                      ),
                    ),
                    controller.isMainBottomMenuMap
                        ? const FavioratePlacesDialogu()
                        : const SizedBox(),
                    controller.isMainBottomMenuMap
                        ? const SizedBox()
                        : Text(
                            'From : Current Location'.tr,
                            style: AppStyle.subtitle,
                          ),
                    controller.isMainBottomMenuMap
                        ? const SizedBox()
                        : formSearchPlaces()
                  ],
                ),
              ),
            ));
  }
}

class FavioratePlacesDialogu extends StatelessWidget {
  const FavioratePlacesDialogu({
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    Get.put(MapPassengerController());
    return GetBuilder<MapPassengerController>(
        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 {
                                        await controller.getMap(
                                          '${controller.myLocation.latitude},${controller.myLocation.longitude}',
                                          '${favoritePlaces[index]['latitude']},${favoritePlaces[index]['longitude']}',
                                        );
                                        // controller.changePickerShown();
                                        controller.showBottomSheet1();
                                        Get.back();
                                        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,
                ),
              )),
            ));
  }
}
