handleKeyAction method
void
handleKeyAction(
- String key
)
Implementation
void handleKeyAction(String key) {
final level = dialogLevel.value;
switch (key) {
case 'up':
if (selectedIndex.value > 0) selectedIndex.value--;
break;
case 'down':
final maxIdx = level.type == _DialogLevelType.teammateList
? teammateStatuses.length - 1
: 0;
if (selectedIndex.value < maxIdx) selectedIndex.value++;
break;
case 'enter':
if (level.type == _DialogLevelType.teammateList) {
selectTeammate(selectedIndex.value);
}
break;
case 'left':
if (level.type == _DialogLevelType.teammateDetail) {
goBackToList();
}
break;
case 'escape':
if (level.type == _DialogLevelType.teammateDetail) {
goBackToList();
} else {
onDone();
}
break;
case 'k':
final target = level.type == _DialogLevelType.teammateList
? (teammateStatuses.isNotEmpty
? teammateStatuses[selectedIndex.value]
: null)
: currentTeammate;
if (target != null) {
killTeammate(target);
if (level.type == _DialogLevelType.teammateDetail) {
goBackToList();
}
}
break;
case 's':
final shutdownTarget = level.type == _DialogLevelType.teammateList
? (teammateStatuses.isNotEmpty
? teammateStatuses[selectedIndex.value]
: null)
: currentTeammate;
if (shutdownTarget != null) {
shutdownTeammate(shutdownTarget);
if (level.type == _DialogLevelType.teammateDetail) {
goBackToList();
}
}
break;
case 'h':
final hideTarget = level.type == _DialogLevelType.teammateList
? (teammateStatuses.isNotEmpty
? teammateStatuses[selectedIndex.value]
: null)
: currentTeammate;
if (hideTarget != null) {
toggleTeammateVisibility(hideTarget);
if (level.type == _DialogLevelType.teammateDetail) {
goBackToList();
}
}
break;
case 'p':
if (level.type == _DialogLevelType.teammateList) {
pruneIdleTeammates();
}
break;
}
}