PlatformMenuPicker<T extends Object> class
A platform-adaptive menu picker that renders Material DropdownMenu on Android and CupertinoPicker with CupertinoListTile on iOS.
This widget automatically selects the appropriate menu picker implementation based on the target platform:
- On Android: renders Material Design DropdownMenu
- On iOS: depends on the number of items (see https://developer.apple.com/design/human-interface-guidelines/pickers#Best-practices).
- For 5 or less, it uses PullDownButton.
- For more, it uses showCupertinoModalPopup.
The menu picker can be configured with platform-specific data through materialMenuPickerData and cupertinoMenuPickerData, or with common properties.
Example:
PlatformMenuPicker<String>(
items: ['Option 1', 'Option 2', 'Option 3'],
currentValue: _selectedOption,
onSelected: (value) => setState(() => _selectedOption = value),
labelText: 'Choose an option',
)
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatelessWidget
- PlatformWidgetBase
- PlatformWidgetKeyedBase
- PlatformMenuPicker
Constructors
-
PlatformMenuPicker({required Iterable<
T> items, T? currentValue, bool isEnabled = true, Widget? leadingIcon, String? labelText, ValueChanged<T> ? onSelected, MaterialMenuPickerData? materialMenuPickerData, CupertinoMenuPickerData? cupertinoMenuPickerData, Key? widgetKey, Key? key}) -
Creates a platform-adaptive menu picker.
const
Properties
- cupertinoMenuPickerData → CupertinoMenuPickerData?
-
Cupertino-specific menu picker data.
final
- currentValue → T?
-
The currently selected value.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- isEnabled → bool
-
Whether the menu picker is enabled and interactive.
final
-
items
→ Iterable<
T> -
The list of items to display in the menu.
final
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- labelText → String?
-
Label text to display above the menu items.
final
- leadingIcon → Widget?
-
Icon to display before the menu items.
final
- materialMenuPickerData → MaterialMenuPickerData?
-
Material-specific menu picker data.
final
-
Function to transform the selected value to a MenuPickerItem representation.
final
-
onSelected
→ ValueChanged<
T> ? -
Callback when an item is selected.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- widgetKey → Key?
-
Optional key applied to the inner platform-specific widget.
finalinherited
Methods
-
build(
BuildContext context) → Widget -
Describes the part of the user interface represented by this widget.
inherited
-
buildCupertino(
BuildContext context) → Widget -
Builds the Cupertino (iOS) variant of this widget.
override
-
buildMaterial(
BuildContext context) → Widget -
Builds the Material Design (Android) variant of this widget.
override
-
createElement(
) → StatelessElement -
Creates a StatelessElement to manage this widget's location in the tree.
inherited
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent 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, int wrapWidth = 65}) → 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.
inherited