onKey method
Implementation
@override
bool onKey(KeyEvent event, RenderContext ctx) {
if (items.isEmpty) return false;
state.activeIndex = state.activeIndex.clamp(0, items.length - 1);
if (event.key == NamedKey.arrowUp || event.char == 'k') {
state.activeIndex = (state.activeIndex - 1).clamp(0, items.length - 1);
return true;
}
if (event.key == NamedKey.arrowDown || event.char == 'j') {
state.activeIndex = (state.activeIndex + 1).clamp(0, items.length - 1);
return true;
}
if (event.key == NamedKey.home) {
state.activeIndex = 0;
return true;
}
if (event.key == NamedKey.end) {
state.activeIndex = items.length - 1;
return true;
}
if (event.char == ' ') {
final item = items[state.activeIndex];
if (state.checked.contains(item)) {
state.checked.remove(item);
} else {
state.checked.add(item);
}
onChanged?.call(state.checked.toList(growable: false));
return true;
}
return false;
}