handleKey method
bool
handleKey( - String keyCode
)
Implementation
bool handleKey(String keyCode) {
final keyUpper = keyCode.toUpperCase();
if (keyUpper == 'RIGHT' ||
keyUpper == 'CURSOR_RIGHT' ||
keyUpper == 'LEFT' ||
keyUpper == 'CURSOR_LEFT' ||
keyUpper == 'UP' ||
keyUpper == 'CURSOR_UP' ||
keyUpper == 'DOWN' ||
keyUpper == 'CURSOR_DOWN') {
moveFocus(keyUpper);
return true;
}
if (keyUpper == 'ENTER' || keyUpper == 'OK' || keyUpper == 'SELECT') {
handleSelection(null, 'ENTER');
return true;
}
bool triggeredAny = false;
for (var media in getActiveMedia()) {
if (media.id != null) {
final links = scheduler.getLinksForComponent(media.id!);
final hasLink = links.any((l) => l.children.whereType<Bind>().any((b) =>
(b.role == 'onSelection' || b.role == 'onSelect') &&
b.component == media.id &&
(b.children.whereType<BindParam>().any((bp) =>
(bp.name == 'keyCode' || bp.name == 'key') &&
bp.value?.toUpperCase() == keyUpper) ||
l.children.whereType<BindParam>().any((bp) =>
(bp.name == 'keyCode' || bp.name == 'key') &&
bp.value?.toUpperCase() == keyUpper))));
if (hasLink) {
scheduler.triggerSelection(media.id!, keyUpper);
triggeredAny = true;
}
}
}
return triggeredAny;
}