DropdownButton<T> constructor
- Key? key,
- required List<
DropdownMenuItem< ? items,T> > - DropdownButtonBuilder? selectedItemBuilder,
- T? value,
- Widget? hint,
- Widget? disabledHint,
- required ValueChanged<
T?> ? onChanged, - VoidCallback? onTap,
- int elevation = 8,
- TextStyle? style,
- Widget? underline,
- Widget? icon,
- Color? iconDisabledColor,
- Color? iconEnabledColor,
- double iconSize = 24.0,
- bool isDense = false,
- bool isExpanded = false,
- double? itemHeight = kMinInteractiveDimension,
- Color? focusColor,
- FocusNode? focusNode,
- bool autofocus = false,
- Color? dropdownColor,
- bool? enableFeedback,
- AlignmentGeometry alignment = AlignmentDirectional.centerStart,
- BorderRadius? borderRadius,
- bool isDropdown = false,
- bool forceWidth = false,
- bool? isPinnedSelected,
- bool isOutsideShadow = false,
- EdgeInsets? itemPadding,
- Color? itemBackgroundColor,
- Color? unselectItemBackgroundColor,
Creates a dropdown button.
The items
must have distinct values. If value
isn't null then it
must be equal to one of the DropdownMenuItem values. If items
or
onChanged
is null, the button will be disabled, the down arrow
will be greyed out.
If value
is null and the button is enabled, hint
will be displayed
if it is non-null.
If value
is null and the button is disabled, disabledHint
will be displayed
if it is non-null. If disabledHint
is null, then hint
will be displayed
if it is non-null.
The elevation
and iconSize
arguments must not be null (they both have
defaults, so do not need to be specified). The boolean isDense
and
isExpanded
arguments must not be null.
The autofocus
argument must not be null.
The dropdownColor
argument specifies the background color of the
dropdown when it is open. If it is null, the current theme's
ThemeData.canvasColor will be used instead.
Implementation
DropdownButton({
Key? key,
required this.items,
this.selectedItemBuilder,
this.value,
this.hint,
this.disabledHint,
required this.onChanged,
this.onTap,
this.elevation = 8,
this.style,
this.underline,
this.icon,
this.iconDisabledColor,
this.iconEnabledColor,
this.iconSize = 24.0,
this.isDense = false,
this.isExpanded = false,
this.itemHeight = kMinInteractiveDimension,
this.focusColor,
this.focusNode,
this.autofocus = false,
this.dropdownColor,
this.menuMaxHeight,
this.enableFeedback,
this.alignment = AlignmentDirectional.centerStart,
this.borderRadius,
this.isDropdown = false,
this.forceWidth = false,
this.isPinnedSelected,
this.isOutsideShadow = false,
this.itemPadding,
this.itemBackgroundColor,
this.unselectItemBackgroundColor,
// When adding new arguments, consider adding similar arguments to
// DropdownButtonFormField.
}) : assert(
items == null ||
items.isEmpty ||
value == null ||
items.where((DropdownMenuItem<T> item) {
return item.value == value;
}).length ==
1,
"There should be exactly one item with [DropdownButton]'s value: "
'$value. \n'
'Either zero or 2 or more [DropdownMenuItem]s were detected '
'with the same value',
),
assert(itemHeight == null || itemHeight >= kMinInteractiveDimension),
super(key: key);