handleInput method
override
Fonction permettant de gérer l'entrée de l'utilisateur
Implementation
@override
Future<void> handleInput() async {
int startIndex = sublistIndex[displayedSubList];
int endIndex = (sublistIndex[displayedSubList]+displayedElements)-1;
int displayEndIndex = endIndex < options.length ? endIndex : options.length;
var key = await console.readKey();
if (key.isControl) {
switch (key.controlChar) {
case ControlCharacter.arrowUp:
if (selectedIndex == startIndex){
if (selectedIndex == 0){
displayedSubList = (sublistIndex.length-1);
}
else{
displayedSubList--;
}
}
selectedIndex = (selectedIndex - 1) % options.length;
break;
case ControlCharacter.arrowDown:
if (selectedIndex == displayEndIndex){
if (displayedSubList == (sublistIndex.length-1)){
displayedSubList = 0;
}
else{
displayedSubList += 1;
}
}
selectedIndex = (selectedIndex + 1) % options.length;
break;
case ControlCharacter.ctrlC:
controller.handleInput("exit", null);
break;
case ControlCharacter.enter:
print("This operation can take some time");
await controller.handleInput("openCourse",selectedIndex,parent: this);
break;
case ControlCharacter.escape:
controller.handleInput("exit", null);
break;
case ControlCharacter.backspace:
controller.handleInput("return", null);
default:
// Ignorer les autres touches
break;
}
}
else{
switch (key.char){
case 'o':
logger("Opening course in file explorer");
await controller.handleInput("openCourseFE", selectedIndex, parent: this);
case 'r':
logger("Research !");
}
}
}