import 'package:flutter/material.dart';
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
import 'package:geolocator/geolocator.dart';
import 'package:get/get.dart';
import 'package:ride/constant/colors.dart';
import 'package:ride/views/widgets/elevated_btn.dart';
import 'package:ride/views/widgets/my_scafold.dart';

import '../../constant/style.dart';
import '../../controller/rate/rate_conroller.dart';

class RatePassenger extends StatelessWidget {
  final RateController controller = Get.put(RateController());

  RatePassenger({super.key});

  @override
  Widget build(BuildContext context) {
    return MyScafolld(
      title: 'Rate Passenger'.tr,
      body: [
        Positioned(
            top: 40,
            left: Get.width * .1,
            right: Get.width * .1,
            child: Container(
              decoration: AppStyle.boxDecoration,
              child: Column(
                children: [
                  Center(
                    child: RatingBar.builder(
                      initialRating: 0,
                      itemCount: 5,
                      itemSize: 50,
                      itemPadding: const EdgeInsets.symmetric(horizontal: 2),
                      itemBuilder: (context, index) {
                        switch (index) {
                          case 0:
                            return const Icon(
                              Icons.sentiment_very_dissatisfied,
                              color: Colors.red,
                            );
                          case 1:
                            return const Icon(
                              Icons.sentiment_dissatisfied,
                              color: Colors.redAccent,
                            );
                          case 2:
                            return const Icon(
                              Icons.sentiment_neutral,
                              color: Colors.amber,
                            );
                          case 3:
                            return const Icon(
                              Icons.sentiment_satisfied,
                              color: Colors.lightGreen,
                            );
                          case 4:
                            return const Icon(
                              Icons.sentiment_very_satisfied,
                              color: Colors.green,
                            );
                          default:
                            return const Icon(
                              Icons.sentiment_neutral,
                              color: Colors.amber,
                            );
                        } //
                      },
                      onRatingUpdate: (rating) {
                        controller.selectRateItem(rating);
                      },
                    ),
                  ),
                  const SizedBox(
                    height: 20,
                  ),
                  SizedBox(
                    width: Get.width * .75,
                    child: TextFormField(
                      maxLines: 4,
                      minLines: 1,
                      keyboardType: TextInputType.multiline,
                      controller: controller.comment,
                      decoration: InputDecoration(
                        labelText: 'Enter your Note'.tr,
                        hintText: 'Type something...',
                        prefixIcon: const Icon(
                            Icons.rate_review), // Add an icon as a prefix
                        suffixIcon: IconButton(
                          icon: const Icon(
                            Icons.clear,
                            color: AppColor.redColor,
                          ), // Add an icon as a suffix
                          onPressed: () {
                            controller.comment.clear();
                          },
                        ),
                        border:
                            const OutlineInputBorder(), // Add a border around the input field
                        enabledBorder: const OutlineInputBorder(
                          borderSide: BorderSide(
                              color: Colors.blue), // Customize the border color
                        ),
                        focusedBorder: const OutlineInputBorder(
                          borderSide: BorderSide(
                              color: Colors
                                  .green), // Customize the border color when focused
                        ),
                        errorBorder: const OutlineInputBorder(
                          borderSide: BorderSide(
                              color: Colors
                                  .red), // Customize the border color when there's an error
                        ),
                      ),
                    ),
                  ),
                  const SizedBox(
                    height: 20,
                  ),
                  MyElevatedButton(
                      title: 'Submit rating'.tr,
                      onPressed: () => controller.addRateToPassenger())
                ],
              ),
            )),
      ],
      isleading: false,
    );
  }
}
