handleKeyEvent method
Handles incoming keyboard events to navigate and interact with the menu.
Implementation
@override
bool handleKeyEvent(term.KeyEvent event) {
if (!isOpen) {
if (event.baseKey == term.TermKey.space ||
event.baseKey == term.TermKey.enter ||
event.key == 'down') {
openMenu();
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.baseKey == term.TermKey.enter ||
event.baseKey == term.TermKey.space) {
selectItem(selectedIndex);
return true;
} else if (event.key == 'escape') {
widget.onCanceled?.call();
closeMenu();
return true;
}
return false;
}