build method
Describes the part of the user interface represented by this widget.
Implementation
@override
Widget build(BuildContext context) {
if (!isOpen) {
updateSelectedIndex();
}
final currentItem = widget.items.firstWhere(
(item) => item.value == widget.value,
orElse: () => widget.items.first,
);
final displayWidget = widget.value != null
? currentItem.child
: (widget.hint ?? const Text('Select...'));
return _DropdownButtonRenderWidget(
displayWidget: displayWidget,
isOpen: isOpen,
focused: widget.focused,
style: widget.style,
onRender: (bounds) {
if (buttonBounds != bounds) {
buttonBounds = bounds;
if (isOpen && overlayEntry != null) {
overlayEntry?._overlayState?.setState(() {});
}
}
},
onAction: toggleDropdown,
onKey: handleKeyEvent,
);
}