handleInput method

  1. @override
Future<void> handleInput()
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 !");
    }
  }

}