import 'package:mohem_flutter_app/theme/colors.dart'; import 'package:mohem_flutter_app/utils/utils.dart'; import 'package:mohem_flutter_app/widgets/txt.dart'; import 'package:flutter/material.dart'; import 'package:sizer/sizer.dart'; class TxtField extends StatelessWidget { TextEditingController controller = new TextEditingController(); String? title; 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; TxtField({ this.title, 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, }); @override Widget build(BuildContext context) { controller.text = title ?? ""; 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: () {}, 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) mWidth(8), 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: Txt( buttonTitle ?? "Search", color: Colors.white, fontSize: 18, bold: true, ), ), ), ), ), ), ), ], ), ); } }