You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			156 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			156 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Dart
		
	
| 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,
 | |
|                         ),
 | |
|                       ),
 | |
|                     ),
 | |
|                   ),
 | |
|                 ),
 | |
|               ),
 | |
|             ),
 | |
|         ],
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 |