build method

  1. @override
Widget build(
  1. BuildContext context
)
override

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,
  );
}