import 'package:car_provider_app/extensions/int_extensions.dart'; import 'package:car_provider_app/theme/colors.dart'; import 'package:car_provider_app/utils/utils.dart'; import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:flutter/material.dart'; import 'package:sizer/sizer.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; Function? onTap; String? buttonTitle; int? maxLines; bool isSidePaddingZero; bool isNeedBorder; bool? isPasswordEnabled; Function(String)? onChanged; 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, }); @override Widget build(BuildContext context) { controller.text = value ?? ""; return InkWell( onTap: isNeedClickAll == false ? null : () { onTap!(); }, customBorder: inkWellCorner(), child: Row( children: [ Expanded( child: Card( elevation: elevation, margin: isSidePaddingZero?EdgeInsets.zero:null, child: TextField( 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: accentColor, width:isNeedBorder? 1.0:0), borderRadius: BorderRadius.circular(4.0), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: borderColor, width:isNeedBorder? 1.0:0), borderRadius: BorderRadius.circular(4.0), ), disabledBorder: OutlineInputBorder( borderSide: BorderSide(color: borderColor, width:isNeedBorder? 1.0:0), borderRadius: BorderRadius.circular(4.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: () {}, 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), ), ), ), ), ), ), ], ), ); } }