DropdownMenuFormField<T> constructor
- Key? key,
- bool enabled = true,
- double? width,
- Widget? leadingIcon,
- Widget? trailingIcon,
- Widget? label,
- String? hintText,
- String? helperText,
- Widget? selectedTrailingIcon,
- bool enableFilter = false,
- bool enableSearch = true,
- TextInputType? keyboardType,
- TextStyle? textStyle,
- TextAlign textAlign = TextAlign.start,
- Object? inputDecorationTheme,
- TextEditingController? controller,
- T? initialSelection,
- ValueChanged<
T?> ? onSelected, - FocusNode? focusNode,
- bool? requestFocusOnTap,
- EdgeInsetsGeometry? expandedInsets,
- Offset? alignmentOffset,
- FilterCallback<
T> ? filterCallback, - SearchCallback<
T> ? searchCallback, - required List<
DropdownMenuEntry< dropdownMenuEntries,T> > - List<
TextInputFormatter> ? inputFormatters, - DropdownMenuCloseBehavior closeBehavior = DropdownMenuCloseBehavior.all,
- int maxLines = 1,
- TextInputAction? textInputAction,
- String? restorationId,
- FormFieldSetter<
T> ? onSaved, - AutovalidateMode autovalidateMode = AutovalidateMode.disabled,
- FormFieldValidator<
T> ? validator, - String? forceErrorText,
Creates a DropdownMenu widget that is a FormField.
For a description of the onSaved
, validator
, or autovalidateMode
parameters, see FormField. For the rest, see DropdownMenu.
Implementation
DropdownMenuFormField({
super.key,
bool enabled = true,
double? width,
double? menuHeight,
Widget? leadingIcon,
Widget? trailingIcon,
Widget? label,
String? hintText,
String? helperText,
Widget? selectedTrailingIcon,
bool enableFilter = false,
bool enableSearch = true,
TextInputType? keyboardType,
TextStyle? textStyle,
TextAlign textAlign = TextAlign.start,
// TODO(bleroux): Clean this up once `InputDecorationTheme` is fully normalized.
Object? inputDecorationTheme,
MenuStyle? menuStyle,
this.controller,
T? initialSelection,
this.onSelected,
FocusNode? focusNode,
bool? requestFocusOnTap,
EdgeInsetsGeometry? expandedInsets,
Offset? alignmentOffset,
FilterCallback<T>? filterCallback,
SearchCallback<T>? searchCallback,
required this.dropdownMenuEntries,
List<TextInputFormatter>? inputFormatters,
DropdownMenuCloseBehavior closeBehavior = DropdownMenuCloseBehavior.all,
int maxLines = 1,
TextInputAction? textInputAction,
super.restorationId,
super.onSaved,
AutovalidateMode autovalidateMode = AutovalidateMode.disabled,
super.validator,
super.forceErrorText,
}) : super(
initialValue: initialSelection,
autovalidateMode: autovalidateMode,
builder: (FormFieldState<T> field) {
final _DropdownMenuFormFieldState<T> state = field as _DropdownMenuFormFieldState<T>;
void onSelectedHandler(T? value) {
field.didChange(value);
onSelected?.call(value);
}
return UnmanagedRestorationScope(
bucket: field.bucket,
child: DropdownMenu<T>(
restorationId: restorationId,
enabled: enabled,
width: width,
menuHeight: menuHeight,
leadingIcon: leadingIcon,
trailingIcon: trailingIcon,
label: label,
hintText: hintText,
helperText: helperText,
errorText: state.errorText,
selectedTrailingIcon: selectedTrailingIcon,
enableFilter: enableFilter,
enableSearch: enableSearch,
keyboardType: keyboardType,
textStyle: textStyle,
textAlign: textAlign,
inputDecorationTheme: inputDecorationTheme,
menuStyle: menuStyle,
controller: controller,
initialSelection: state.value,
onSelected: onSelectedHandler,
focusNode: focusNode,
requestFocusOnTap: requestFocusOnTap,
expandedInsets: expandedInsets,
alignmentOffset: alignmentOffset,
filterCallback: filterCallback,
searchCallback: searchCallback,
inputFormatters: inputFormatters,
closeBehavior: closeBehavior,
dropdownMenuEntries: dropdownMenuEntries,
maxLines: maxLines,
textInputAction: textInputAction,
),
);
},
);