DropdownButton2<T> class Null safety

A Material Design button for selecting from a list of items.

A dropdown button lets the user select from a number of items. The button shows the currently selected item as well as an arrow that opens a menu for selecting another item.

One ancestor must be a Material widget and typically this is provided by the app's Scaffold.

The type T is the type of the value that each dropdown item represents. All the entries in a given menu must represent values with consistent types. Typically, an enum is used. Each DropdownMenuItem in items must be specialized with that same type argument.

The onChanged callback should update a state variable that defines the dropdown's value. It should also call State.setState to rebuild the dropdown with the new value.

{@tool dartpad} This sample shows a DropdownButton with a large arrow icon, purple text style, and bold purple underline, whose value is one of "One", "Two", "Free", or "Four".

** See code in examples/api/lib/material/dropdown/dropdown_button.0.dart ** {@end-tool}

If the onChanged callback is null or the list of items is null then the dropdown button will be disabled, i.e. its arrow will be displayed in grey and it will not respond to input. A disabled button will display the disabledHint widget if it is non-null. However, if disabledHint is null and hint is non-null, the hint widget will instead be displayed.

Requires one of its ancestors to be a Material widget.

See also:

Inheritance

Constructors

Creates a DropdownButton2 It's customizable DropdownButton with steady dropdown menu and many other features.

Properties

alignment AlignmentGeometry
Defines how the hint or the selected item is positioned within the button.
final
autofocus bool
True if this widget will be selected as the initial focus when no other node in its scope is currently focused.
final
barrierColor Color?
The color to use for the modal barrier. If this is null, the barrier will be transparent.
final
barrierDismissible bool
Whether you can dismiss this route by tapping the modal barrier.
final
barrierLabel String?
The semantic label used for a dismissible barrier.
final
buttonDecoration BoxDecoration?
The decoration of the Button
final
buttonElevation int?
The elevation of the Button
final
buttonHeight double?
The height of the button.
final
buttonPadding EdgeInsetsGeometry?
The inner padding of the Button
final
buttonWidth double?
The width of the button
final
customButton Widget?
Uses custom widget like icon,image,etc.. instead of the default button
final
customItemsHeights List<double>?
Uses different predefined heights for the menu items (useful for adding dividers)
final
disabledHint Widget?
A preferred placeholder widget that is displayed when the dropdown is disabled.
final
The decoration of the dropdown menu
final
The z-coordinate at which to place the menu when open.
final
Opens the dropdown menu in fullscreen mode (Above AppBar & TabBar)
final
The maximum height of the menu.
final
Opens the dropdown menu over the button instead of below it
final
The inner padding of the dropdown menu
final
The inner padding of the dropdown menu including the scrollbar
final
The width of the dropdown menu
final
enableFeedback bool?
Whether detected gestures should provide acoustic and/or haptic feedback.
final
focusColor Color?
The color for the button's Material when it has the input focus.
final
focusNode FocusNode?
An optional focus node to use as the focus node for this widget.
final
formFieldCallBack → _OnMenuStateChangeFn?
Called when the dropdown menu is opened or closed in case of using DropdownButtonFormField2 to update the FormField's focus.
final
hashCode int
The hash code for this object.
@nonVirtual, read-only, inherited
hint Widget?
A placeholder widget that is displayed by the dropdown button.
final
icon Widget?
The widget to use for the drop-down button's icon.
final
iconDisabledColor Color?
The color of any Icon descendant of icon if this button is disabled, i.e. if onChanged is null.
final
iconEnabledColor Color?
The color of any Icon descendant of icon if this button is enabled, i.e. if onChanged is defined.
final
iconOnClick Widget?
Shows different icon when dropdown menu open
final
iconSize double
The size to use for the drop-down button's icon.
final
isDense bool
Reduce the button's height.
final
isExpanded bool
Set the dropdown's inner contents to horizontally fill its parent.
final
itemHeight double
The default value is kMinInteractiveDimension
final
itemPadding EdgeInsetsGeometry?
The padding of menu items
final
items List<DropdownMenuItem<T>>?
The list of items the user can select.
final
key Key?
Controls how one widget replaces another widget in the tree.
final, inherited
offset Offset?
Changes the position of the dropdown menu
final
onChanged ValueChanged<T?>?
Called when the user selects an item.
final
onMenuStateChange → _OnMenuStateChangeFn?
Called when the dropdown menu is opened or closed.
final
openWithLongPress bool
Opens the dropdown menu on long-pressing instead of tapping
final
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
scrollbarAlwaysShow bool?
Always show the scrollbar even when a scroll is not underway
final
scrollbarRadius Radius?
The radius of the scrollbar's corners
final
scrollbarThickness double?
The thickness of the scrollbar
final
searchController TextEditingController?
The TextEditingController used for searchable dropdowns. If this is null, then it'll perform as a normal dropdown without searching feature.
final
searchInnerWidget Widget?
The widget to use for searchable dropdowns, such as search bar. It will be shown at the top of the dropdown menu.
final
searchMatchFn → _SearchMatchFn?
The match function used for searchable dropdowns. If this is null, then _defaultSearchMatchFn will be used.
final
selectedItemBuilder DropdownButtonBuilder?
A builder to customize the dropdown buttons corresponding to the DropdownMenuItems in items.
final
selectedItemHighlightColor Color?
The highlight color of the current selected item
final
style TextStyle?
The text style to use for text in the dropdown button and the dropdown menu that appears when you tap the button.
final
underline Widget?
The widget to use for drawing the drop-down button's underline.
final
value → T?
The value of the currently selected DropdownMenuItem.
final

Methods

createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() State<DropdownButton2<T>>
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
@protected, inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) bool
The equality operator.
@nonVirtual, inherited