Pourquoi ai-je l’erreur : Unsupported operation: Infinity or NaN toInt ?
L’erreur « Unsupported operation: Infinity or NaN toInt » dans Flutter se produit généralement lorsqu’on essaie de convertir un nombre qui est soit infini (Infinity
) soit « Not a Number » (NaN
) en un entier (int) en utilisant la méthode toInt()
. Ces valeurs ne peuvent pas être représentées comme des nombres entiers, ce qui va donc provoquer cette erreur.
Voici un exemple de code qui va produire cette erreur :
void main() {
double value = 0.0 / 0.0; // Ceci produit NaN
int intValue = value.toInt(); // Essaie de convertir NaN en int, ce qui provoque l'erreur
print(intValue);
}
Comment résoudre cette erreur ?
La manière la plus simple d’éviter ce problème est de vérifier vos valeurs avant de les convertir, et le cas échéant de donner une valeur par défaut à vos variables de type NaN
ou Infinity
. Voici un exemple où je vérifie d’abord la valeur de ma variable. Je lui attribue ensuite une autre valeur si elle risque de me générer une erreur :
void main() {
double value = 0.0 / 0.0; // Ceci produit NaN
int intValue;
if (value.isNaN) {
intValue = 0; // Par exemple, utilisez 0 comme valeur par défaut
} else if (value.isInfinite) {
intValue = value.isNegative ? -2147483648 : 2147483647; // Utilisez la valeur maximale ou minimale possible
} else {
intValue = value.toInt();
}
print(intValue);
}