handleKeyEvent method

void handleKeyEvent(
  1. KeyEvent event
)

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

Implementation

void handleKeyEvent(KeyEvent event) {
  if (!isOpen) {
    if (event.key == ' ' || event.key == '\n' || event.key == 'down') {
      openDropdown();
    }
    return;
  }

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