handleKeyEvent method

  1. @override
bool handleKeyEvent(
  1. KeyEvent event
)
override

Handles incoming keyboard events to navigate and interact with the menu.

Implementation

@override
bool handleKeyEvent(term.KeyEvent event) {
  if (!isOpen) {
    if (event.key == ' ' || event.key == '\n' || event.key == 'down') {
      openDropdown();
      return true;
    }
    return false;
  }

  if (event.key == 'down') {
    setState(() {
      selectedIndex = (selectedIndex + 1) % widget.items.length;
    });
    overlayEntry?._overlayState?.setState(() {});
    return true;
  } else if (event.key == 'up') {
    setState(() {
      selectedIndex =
          (selectedIndex - 1 + widget.items.length) % widget.items.length;
    });
    overlayEntry?._overlayState?.setState(() {});
    return true;
  } else if (event.key == 'enter' || event.key == '\n' || event.key == ' ') {
    selectItem(selectedIndex);
    return true;
  } else if (event.key == 'escape') {
    closeDropdown();
    return true;
  }
  return false;
}