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,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|