import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ride/constant/table_names.dart';

import '../../../constant/colors.dart';
import '../../../constant/style.dart';
import '../../../controller/functions/toast.dart';
import '../../../controller/home/map_passenger_controller.dart';
import '../../../main.dart';

GetBuilder<MapPassengerController> formSearchPlaces() {
  // DbSql sql = DbSql.instance;
  return GetBuilder<MapPassengerController>(
      builder: (controller) => Column(
            children: [
              Padding(
                padding: const EdgeInsets.all(16),
                child: Container(
                  decoration:
                      const BoxDecoration(color: AppColor.secondaryColor),
                  child: TextField(
                    decoration: InputDecoration(
                      border: const OutlineInputBorder(
                          borderRadius: BorderRadius.only(),
                          gapPadding: 4,
                          borderSide: BorderSide(
                            color: AppColor.redColor,
                            width: 2,
                          )),
                      suffixIcon: const Icon(Icons.search),
                      hintText: controller.hintTextDestinationPoint,
                      hintStyle: AppStyle.title,
                      hintMaxLines: 1,
                      prefixIcon: IconButton(
                        onPressed: () {
                          controller.placeDestinationController.clear();
                          controller.clearPlacesDestination();
                        },
                        icon: Icon(
                          Icons.clear,
                          color: Colors.red[300],
                        ),
                      ),
                    ),
                    controller: controller.placeDestinationController,
                    onChanged: (value) {
                      if (controller.placeDestinationController.text.length >
                          5) {
                        controller.getPlaces();
                        controller.changeHeightPlaces();
                      }
                    },
                    // onEditingComplete: () => controller.changeHeight(),
                  ),
                ),
              ),
              controller.placesDestination.isEmpty
                  ? InkWell(
                      onTap: () {
                        controller.changeMainBottomMenuMap();
                        controller.changePickerShown();
                      },
                      child: Text(
                        'Choose from Map'.tr,
                        style:
                            AppStyle.title.copyWith(color: AppColor.blueColor),
                      ),
                    )
                  : const SizedBox(),
              Container(
                height: controller.placesDestination.isNotEmpty
                    ? controller.height
                    : 0,
                color: AppColor.secondaryColor,
                child: ListView.builder(
                  itemCount: controller.placesDestination.length,
                  itemBuilder: (BuildContext context, int index) {
                    var res = controller.placesDestination[index];
                    return InkWell(
                      onTap: () async {
                        controller.changeHeightPlaces();

                        controller.changeHeightPlaces();

                        controller.myLocation = controller.newMyLocation;
                        controller.convertHintTextDestinationNewPlaces(index);

                        controller.placesDestination = [];
                        controller.placeDestinationController.clear();
                      },
                      child: Padding(
                        padding: const EdgeInsets.symmetric(horizontal: 10),
                        child: Column(
                          children: [
                            Row(
                              mainAxisAlignment: MainAxisAlignment.spaceBetween,
                              children: [
                                Column(
                                  children: [
                                    Image.network(
                                      res['icon'],
                                      width: 20,
                                    ),
                                    IconButton(
                                      onPressed: () async {
                                        await sql.insertData({
                                          'latitude': res['geometry']
                                              ['location']['lat'],
                                          'longitude': res['geometry']
                                              ['location']['lng'],
                                          'name': res['name'].toString(),
                                          'rate': res['rating'].toString(),
                                        }, TableName.placesFavorite);
                                        Toast.show(
                                            context,
                                            '${res['name']} ${'Saved Sucssefully'.tr}',
                                            AppColor.primaryColor);
                                      },
                                      icon: const Icon(Icons.favorite_border),
                                    ),
                                  ],
                                ),
                                Column(
                                  children: [
                                    Text(
                                      res['name'].toString(),
                                      style: AppStyle.title,
                                    ),
                                    Text(
                                      res['vicinity'].toString(),
                                      style: AppStyle.subtitle,
                                    ),
                                  ],
                                ),
                                Column(
                                  children: [
                                    Text(
                                      'rate',
                                      style: AppStyle.subtitle,
                                    ),
                                    Text(
                                      res['rating'].toString(),
                                      style: AppStyle.subtitle,
                                    ),
                                  ],
                                ),
                              ],
                            ),
                            const Divider(
                              thickness: 1,
                            )
                          ],
                        ),
                      ),
                    );
                  },
                ),
              )
            ],
          ));
}
