handleInput method
override
Fonction permettant de gérer l'entrée de l'utilisateur
Implementation
@override
Future<void> handleInput() async {
int startIndex = (displayedSubList)*displayedElements;
int endIndex = (displayedSubList+1)*(displayedElements);
if (displayedSubList == maxSublists-1){
startIndex = optionLength - displayedElements;
endIndex = optionLength;
}
int displayEndIndex = endIndex < options.length ? endIndex : options.length;
var key = await console.readKey();
if (key.isControl) {
switch (key.controlChar) {
case ControlCharacter.arrowUp:
if (options.isNotEmpty){
if (selectedIndex == startIndex){
displayedSubList = (displayedSubList -1) % maxSublists;
}
selectedIndex = (selectedIndex - 1) % options.length;
}
break;
case ControlCharacter.arrowDown:
if (options.isNotEmpty){
if (selectedIndex+1 == displayEndIndex){
displayedSubList = (displayedSubList +1) % maxSublists;
}
selectedIndex = (selectedIndex + 1) % options.length;
}
break;
case ControlCharacter.ctrlC:
controller.handleInput("exit", null);
break;
case ControlCharacter.enter:
controller.handleInput("openCourse",selectedIndex,parent: this);
break;
case ControlCharacter.escape:
controller.handleInput("exit", null);
break;
default:
// Ignorer les autres touches
break;
}
}
else{
logger("Detected other input than controlCharacter");
switch(key.char){
case 'n':
logger("Adding course");
controller.handleInput("addCourse",null,parent: this);
break;
case 'e':
controller.handleInput("editCourses", null);
break;
case 'r':
controller.handleInput("searchCourse", null);
break;
case 'o':
controller.handleInput("openOptions",null,parent: this);
break;
case 'i':
controller.handleInput("importClasses", null, parent: this);
break;
}
}
}