web-dev-qa-db-fra.com

"La chaîne de type d'argument?" ne peut pas être attribué au type de paramètre 'String' "lors de l'utilisation de stdin.readlinesync ()

je suis nouveau à Dart. Je ne sais pas quel genre d'erreur j'ai faite, mais ce code n'a pas fonctionné. Est un code simple, il suffit de lire l'âge dans le terminal et de dire qu'il est mineur ou plus de 18 ans.

import 'Dart:io'; 

main(){
  print("Entre com a sua idade: ");
  var input = stdin.readLineSync();
  var idade = int.parse(input);

  if(idade >= 18){
    print("É maior de idade");
  }else{
    print("É menor de idade");
  }
}

Et je reçois cette erreur:

algoritmo01.dart: 15: 25: Erreur: Type d'argument 'String?' On ne peut pas être affecté au type de paramètre 'String' car 'String?' est nullable et "chaîne" n'est pas. var idade = int.parse (entrée);

6
Bruno Proença

La réponse acceptée est correcte. Mais il y a une autre solution alternative. Vous pouvez utiliser l'opérateur "si null" comme celui-ci:

var idade = int.parse(input ?? "-1");

Donc, le code complet ressemble à ceci:

import 'Dart:io'; 

main(){
  print("Entre com a sua idade: ");
  var input = stdin.readLineSync();
  var idade = int.parse(input ?? "-1");

  if(idade >= 18){
    print("É maior de idade");
  }else if(idade < 18 && idade > 0){
    print("É menor de idade");
  } else {
    print("entrada errada");
  }
}
0