handleKeyEvent method

bool handleKeyEvent(
  1. KeyEvent event
)

Handles keyboard events for navigation. Returns true if the event was handled.

Implementation

bool handleKeyEvent(KeyEvent event) {
  if (event is! KeyDownEvent) return false;

  switch (event.logicalKey) {
    case LogicalKeyboardKey.arrowDown:
      if (!_isOverlayVisible) {
        showOverlay();
        return true;
      }
      return moveToNextItem();

    case LogicalKeyboardKey.arrowUp:
      if (!_isOverlayVisible) {
        showOverlay();
        return true;
      }
      return moveToPreviousItem();

    case LogicalKeyboardKey.enter:
      if (hasItemFocus) {
        selectFocusedItem();
        return true;
      }
      return false;

    case LogicalKeyboardKey.escape:
      if (_isOverlayVisible) {
        hideOverlay();
        return true;
      }
      return false;

    case LogicalKeyboardKey.home:
      if (_isOverlayVisible && _itemCount > 0) {
        moveToFirstItem();
        return true;
      }
      return false;

    case LogicalKeyboardKey.end:
      if (_isOverlayVisible && _itemCount > 0) {
        moveToLastItem();
        return true;
      }
      return false;

    case LogicalKeyboardKey.pageDown:
      if (_isOverlayVisible && _itemCount > 0) {
        // Move 5 items down or to the end
        final newIndex = (_focusedIndex + 5).clamp(0, _itemCount - 1);
        setFocusedIndex(newIndex);
        return true;
      }
      return false;

    case LogicalKeyboardKey.pageUp:
      if (_isOverlayVisible && _itemCount > 0) {
        // Move 5 items up or to the beginning
        final newIndex = (_focusedIndex - 5).clamp(0, _itemCount - 1);
        setFocusedIndex(newIndex);
        return true;
      }
      return false;

    default:
      return false;
  }
}