"Null check operator used on a null value" : comment corriger l'erreur dans Flutter ?
Le langage Dart a été créé spécifiquement par Google pour faciliter le développement de codes fonctionnant sur plusieurs plateformes en même temps. Il est devenu populaire grâce au framework Flutter. Le langage Dart est un langage pourvu de la fonctionnalité "null safety". Cette fonctionnalité consiste à protéger le code des valeurs nulles, pour minimiser les risques de plantage. C'est cette fonctionnalité qui peut causer l'apparition du message d'erreur "Null check operator used on a null value".
Le langage Dart permet l'utilisation de l'opérateur "!". Cet opérateur vérifie que la variable n'est pas nulle. Si c'est le cas, le message d'erreur "Null check operator used on a null value" est émis lors de la vérification du code. Cela peut se produire dans votre code mais également dans le framework Flutter. Par exemple, si vous utilisez une couleur qui n'existe pas, vous verrez ce message apparaître, car l'opérateur "!" est utilisé dans le code interne du framework.
var longueur = tableau!.length; //Le message s'affiche car la variable tableau est nulle //Exemple avec une couleur new AppBar( title: new Text("Login"), centerTitle: true, backgroundColor: Colors.blueAccent.shade50, //Cette couleur n'existe pas )
Pour résoudre ce problème, la seule solution dans le cas des couleurs consiste à utiliser une couleur qui existe bien dans le framework. Lorsque l'erreur est signalée, repérez bien la ligne indiquée pour trouver l'origine de l'erreur et corrigez le problème. Si le souci vient de votre propre code, il existe plusieurs solutions. Vous pouvez ajouter une condition afin de tester que votre variable n'est pas nulle. Le langage Dart propose également d'autres opérateurs. La combinaison des opérateurs "?." et "??" permet d'affecter une valeur par défaut pour le cas où celle-ci est nulle.
// Utilisation d'un test If (longueur == null) { longueur = []; } var longueur = tableau!.length; //Utilisation des opérateurs var longueur = tableau?.length ?? 0;