DropdownButton<T> class

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.

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.

This sample shows a DropdownButton whose value is one of "One", "Two", "Free", or "Four".
String dropdownValue = 'One';

// ...

Widget build(BuildContext context) {
  return Scaffold(
    body: Center(
      child: DropdownButton<String>(
        value: dropdownValue,
        onChanged: (String newValue) {
          setState(() {
            dropdownValue = newValue;
          });
        },
        items: <String>['One', 'Two', 'Free', 'Four']
          .map<DropdownMenuItem<String>>((String value) {
            return DropdownMenuItem<String>(
              value: value,
              child: Text(value),
            );
          })
          .toList(),
      ),
    ),
  );
}

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.

Requires one of its ancestors to be a Material widget.

See also:

Inheritance

Constructors

Creates a dropdown button. [...]

Properties

disabledHint Widget
A message to show when the dropdown is disabled. [...]
final
elevation int
The z-coordinate at which to place the menu when open. [...]
final
hint Widget
Displayed if value is null.
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
iconSize double
The size to use for the drop-down button's down arrow icon button. [...]
final
isDense bool
Reduce the button's height. [...]
final
isExpanded bool
Set the dropdown's inner contents to horizontally fill its parent. [...]
final
items List<DropdownMenuItem<T>>
The list of items the user can select. [...]
final
onChanged ValueChanged<T>
Called when the user selects an 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, or null if no item has been selected. If value is null then the menu is popped up as if the first item were selected.
final
hashCode int
The hash code for this object. [...]
read-only, inherited
key Key
Controls how one widget replaces another widget in the tree. [...]
final, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited

Methods

createState() → _DropdownButtonState<T>
Creates the mutable state for this widget at a given location in the tree. [...]
override
createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree. [...]
inherited
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.debug }) String
Returns 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 ==(dynamic other) bool
The equality operator. [...]
inherited