constantSearchDropdownButtonFormField2 method
Widget
constantSearchDropdownButtonFormField2({
- required List<
DropdownMenuItem< items,int> > - required dynamic selectedValue,
- required void onChanged(),
- required TextEditingController searchController,
- String? validatorText,
- String? hintText,
- String? labelText,
- Widget? addButtonWidget,
Implementation
Widget constantSearchDropdownButtonFormField2({
required List<DropdownMenuItem<int>> items,
required dynamic selectedValue,
required void Function(Object?) onChanged,
required TextEditingController searchController,
String? validatorText,
String? hintText,
String? labelText,
Widget? addButtonWidget,
}) {
return DropdownButtonFormField2(
searchInnerWidgetHeight: 20,
autovalidateMode: AutovalidateMode.onUserInteraction,
decoration: InputDecoration(
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(color: primaryColor1),
),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: transparentColor),
),
contentPadding: EdgeInsets.zero,
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(color: transparentColor),
borderRadius: BorderRadius.circular(10),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(color: transparentColor),
borderRadius: BorderRadius.circular(10),
),
errorStyle: TextStyle(color: cardColor3, fontSize: 11.5),
),
validator: (value) {
if (value == null) {
return '$validatorText can\'t be empty';
}
return null;
},
scrollbarAlwaysShow: true,
style: body4,
itemPadding: const EdgeInsets.symmetric(horizontal: 10),
hint: Text(
hintText.toString(),
style: body4,
),
isDense: true,
value: selectedValue,
isExpanded: true,
onChanged: onChanged,
items: items,
buttonElevation: 0,
scrollbarRadius: const Radius.circular(40),
searchController: searchController,
dropdownElevation: 0,
dropdownMaxHeight: 250,
scrollbarThickness: 5.0,
searchMatchFn: (a, searchValue) {
if (a.child is Text) {
final textWidget = a.child as Text;
return textWidget.data.toString().toLowerCase().contains(searchValue);
}
return false;
},
onMenuStateChange: (isOpen) {
if (!isOpen) {
searchController.clear();
}
},
searchInnerWidget: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(
top: 10,
bottom: 8,
right: 10,
left: 10,
),
child: TextFormField(
autovalidateMode: AutovalidateMode.onUserInteraction,
style: body4,
controller: searchController,
decoration: InputDecoration(
isDense: true,
labelText: 'Search $labelText',
labelStyle: body4,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
disabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: accentColor3,
style: BorderStyle.solid,
width: 1,
),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: accentColor3,
width: 1,
style: BorderStyle.solid,
),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: accentColor3,
style: BorderStyle.solid,
width: 1,
),
),
),
),
),
addButtonWidget ?? Container(height: 0),
],
),
dropdownDecoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
border: Border.all(width: 1, color: accentColor3),
),
buttonDecoration: BoxDecoration(
borderRadius: const BorderRadius.all(Radius.circular(10)),
border: Border.all(width: 1, color: accentColor3),
),
buttonPadding: const EdgeInsets.only(right: 10),
buttonHeight: 55,
icon: RotatedBox(
quarterTurns: 3,
child: Icon(Icons.chevron_left, color: primaryColor1),
),
iconOnClick: RotatedBox(
quarterTurns: 1,
child: Icon(Icons.chevron_left, color: primaryColor1),
),
);
}