import 'package:car_customer_app/extensions/int_extensions.dart';
import 'package:car_customer_app/theme/colors.dart';
import 'package:car_customer_app/utils/utils.dart';
import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:flutter/material.dart';
import 'package:sizer/sizer.dart';

import '../classes/colors.dart';

class TxtField extends StatelessWidget {
  TextEditingController controller = new TextEditingController();
  String? value;
  String? hint;
  String? lable;
  IconData? prefixData;
  IconData? postfixData;
  bool isNeedFilterButton;
  bool isNeedClickAll;
  bool isButtonEnable;
  double? elevation;
  VoidCallback? onTap;
  String? buttonTitle;
  int? maxLines;
  bool isSidePaddingZero;
  bool isNeedBorder;
  bool? isPasswordEnabled;
  Function(String)? onChanged;
  TextInputType? keyboardType;
  bool isBackgroundEnabled=false;

  TxtField({
    this.value,
    this.lable,
    this.hint,
    this.prefixData,
    this.postfixData,
    this.isNeedClickAll = false,
    this.isNeedFilterButton = false,
    this.elevation,
    this.onTap,
    this.isButtonEnable = false,
    this.buttonTitle,
    this.maxLines,
    this.isSidePaddingZero = false,
    this.isNeedBorder = true,
    this.onChanged,
    this.isPasswordEnabled,
    this.keyboardType,
    this.isBackgroundEnabled=false,
  });

  @override
  Widget build(BuildContext context) {
    controller.text = value ?? "";
    controller.selection = TextSelection.fromPosition(TextPosition(offset: controller.text.length));
    return InkWell(
      onTap: isNeedClickAll == false
          ? null
          : () {
        onTap!();
      },
      customBorder: inkWellCorner(),
      child: Row(
        children: [
          Expanded(
            child: Container(
              decoration: BoxDecoration(
                color: isBackgroundEnabled?MyColors.textFieldColor:Colors.white,
                borderRadius: BorderRadius.all(Radius.circular(0)),
              ),
              child: TextField(
                keyboardType: keyboardType,
                autofocus: false,
                controller: controller,
                enabled: isNeedClickAll == true ? false : true,
                maxLines: maxLines,
                onTap: () {},
                obscureText: isPasswordEnabled ?? false,
                onChanged: onChanged,
                decoration: InputDecoration(
                  labelText: lable,
                  alignLabelWithHint: true,
                  fillColor: Colors.white,
                  focusedBorder: OutlineInputBorder(
                    borderSide: BorderSide(color: MyColors.darkPrimaryColor, width: isNeedBorder ? 2.0 : 0),
                    borderRadius: BorderRadius.circular(0.0),
                  ),
                  enabledBorder: OutlineInputBorder(
                    // borderSide: BorderSide(color: MyColors.textFieldColor, width: isNeedBorder ? 1.0 : 0),
                    borderSide: BorderSide(color: MyColors.darkPrimaryColor, width: isNeedBorder ? 2.0 : 0),
                    borderRadius: BorderRadius.circular(0.0),
                  ),
                  disabledBorder: OutlineInputBorder(
                    // borderSide: BorderSide(color: MyColors.textFieldColor, width: isNeedBorder ? 1.0 : 0),
                    borderSide: BorderSide(color: MyColors.darkPrimaryColor, width: isNeedBorder ? 2.0 : 0),
                    borderRadius: BorderRadius.circular(0.0),
                  ),
                  prefixIcon: prefixData != null
                      ? Icon(
                    Icons.search,
                    color: borderColor,
                  )
                      : null,
                  labelStyle: TextStyle(color: borderColor, fontSize: 13.sp),
                  hintStyle: TextStyle(color: borderColor, fontSize: 9.sp),
                  hintText: hint ?? "",
                  contentPadding: prefixData == null
                      ? EdgeInsets.only(
                    left: 12,
                    right: 12,
                    top: maxLines != null ? 12 : 0,
                    bottom: maxLines != null ? 12 : 0,
                  )
                      : EdgeInsets.zero,
                ),
              ),
            ),
          ),
          if (isNeedFilterButton) 8.width,
          if (isNeedFilterButton)
            InkWell(
              onTap: isNeedClickAll
                  ? null
                  : () {
                controller.clear();
              },
              child: Container(
                width: 55,
                height: 55,
                child: Card(
                  color: accentColor,
                  // margin: EdgeInsets.all(4),
                  // shape: cardRadius(0),
                  child: Icon(
                    postfixData ?? Icons.filter_alt,
                    color: Colors.white,
                  ),
                ),
              ),
            ),
          if (isButtonEnable)
            Material(
              child: InkWell(
                onTap: onTap,
                customBorder: inkWellCorner(),
                child: Container(
                  height: 55,
                  child: Card(
                    color: accentColor,
                    // margin: EdgeInsets.all(4),
                    // shape: cardRadius(0),
                    child: Center(
                      child: Padding(
                        padding: const EdgeInsets.only(left: 12, right: 12),
                        child: (buttonTitle ?? "Search").toText16(color: Colors.white),
                      ),
                    ),
                  ),
                ),
              ),
            ),
        ],
      ),
    );
  }
}
