DropdownMenuFormField<T> constructor

DropdownMenuFormField<T>({
  1. Key? key,
  2. bool enabled = true,
  3. double? width,
  4. double? menuHeight,
  5. Widget? leadingIcon,
  6. Widget? trailingIcon,
  7. Widget? label,
  8. String? hintText,
  9. String? helperText,
  10. Widget? selectedTrailingIcon,
  11. bool enableFilter = false,
  12. bool enableSearch = true,
  13. TextInputType? keyboardType,
  14. TextStyle? textStyle,
  15. TextAlign textAlign = TextAlign.start,
  16. Object? inputDecorationTheme,
  17. MenuStyle? menuStyle,
  18. TextEditingController? controller,
  19. T? initialSelection,
  20. ValueChanged<T?>? onSelected,
  21. FocusNode? focusNode,
  22. bool? requestFocusOnTap,
  23. EdgeInsetsGeometry? expandedInsets,
  24. Offset? alignmentOffset,
  25. FilterCallback<T>? filterCallback,
  26. SearchCallback<T>? searchCallback,
  27. required List<DropdownMenuEntry<T>> dropdownMenuEntries,
  28. List<TextInputFormatter>? inputFormatters,
  29. DropdownMenuCloseBehavior closeBehavior = DropdownMenuCloseBehavior.all,
  30. int maxLines = 1,
  31. TextInputAction? textInputAction,
  32. String? restorationId,
  33. FormFieldSetter<T>? onSaved,
  34. AutovalidateMode autovalidateMode = AutovalidateMode.disabled,
  35. FormFieldValidator<T>? validator,
  36. 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,
           ),
         );
       },
     );