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 = (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;
    }
  }
}