import 'package:flutter/material.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/utils.dart'; import 'package:sizer/sizer.dart'; class TxtField extends StatelessWidget { TextEditingController controller = 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({ Key? key, 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, }) : super(key: key); @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: Utils.inkWellCorner(), child: Row( children: [ Expanded( child: Container( decoration: BoxDecoration( color: isBackgroundEnabled ? MyColors.textFieldColor : Colors.white, borderRadius: const 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 ? const 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: SizedBox( 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: Utils.inkWellCorner(), child: SizedBox( 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").toText( color: Colors.white, fontSize: 16, letterSpacing: -0.64, ), ), ), ), ), ), ), ], ), ); } }