import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:gap/gap.dart';
import 'package:tanami_app/core/styles/app_color.dart';
import 'package:tanami_app/core/styles/app_text.dart';
import 'package:tanami_app/shared/components/password_text_form_field.dart';
import 'package:tanami_app/shared/components/text_widget.dart';

import '../../core/routes/route_name.dart';
import '../../core/routes/routes.dart';
import 'text_from_field_widget.dart';

class FormLabelTextField extends StatelessWidget {
  const FormLabelTextField({
    super.key,
    required this.title,
    required this.type,
    required this.textEditingController,
    required this.hintText,
    this.prefixWidget,
    this.onChangeFun,
  });
  final String title;
  final String type;
  final String hintText;
  final TextEditingController textEditingController;
  final Widget? prefixWidget;
  final Function(String)? onChangeFun;

  @override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        TextWidget().text14W500(
          title,
          clr: AppColor.textLabelColor,
          txtAlign: type == "description" ? TextAlign.start : TextAlign.center,
        ),
        const Gap(10),
        type == "password"
            ? PasswordField(
                controller: textEditingController,
                hintText: hintText,
              )
            : textFormField(
                onInput: onChangeFun,
                validator: (value) {
                  if (type == "phone number") {
                    if (value != null && value.isEmpty) {
                      return AppText.enterPhoneNo;
                    }
                    return null;
                  } else if (type == "country selection") {
                    if (textEditingController.text.isEmpty) {
                      return AppText.chooseCountry;
                    }
                    return null;
                  } else if (type == "description") {
                    if (textEditingController.text.isEmpty) {
                      return AppText.pleaseEnteraDescription;
                    }
                    return null;
                  } else {
                    return null;
                  }
                },
                inputFormatters: [
                  LengthLimitingTextInputFormatter(350),
                ],
                maxlines: type == "description" ? 6 : 1,
                texttype: type == "phone number"
                    ? TextInputType.phone
                    : type == "Email"
                        ? TextInputType.emailAddress
                        : TextInputType.name,
                textEditingController: textEditingController,
                readonly: type == "country selection" ? true : false,
                hintText: hintText,
                leadingIcon: prefixWidget,
                suffixIcon: type == "country selection"
                    ? const Icon(
                        Icons.arrow_forward_ios_rounded,
                        color: Color(0xFFB4B4B4),
                      )
                    : const SizedBox(),
                onTap: () {
                  if (type == "country selection") {
                    goRouter.pushNamed(RouteName.chooseCountryScreen);
                  }
                })
      ],
    );
  }
}
