Ceci est mon code pour vrai sur tout sauf chaîne vide, null et false:
if (routeinfo["no_route"] == "" || routeinfo["no_route"] == null || routeinfo["no_route"] == false) {
// do sth ...
}
Voici mon code pour vrai sur tout sauf chaîne vide, null, false ou zero:
if (routeinfo["no_route"] == "" || routeinfo["no_route"] == null || routeinfo["no_route"] == false || routeinfo["no_route"] == 0) {
// do sth...
}
Comment puis-je écrire cela plus court dans Dart? Ou n'est-ce pas possible?
Vous pourriez faire
if (["", null, false, 0].contains(routeinfo["no_route"])) {
// do sth
}
Si votre exigence était simplement vide ou nulle (comme la mienne quand j'ai vu ce titre dans un résultat de recherche), vous pouvez utiliser l'opérateur de navigation sécurisée de Dart pour le rendre un peu plus concis:
if (routeinfo["no_route"]?.isEmpty ?? true) {
//
}
Où
isEmpty
recherche une chaîne vide, mais si routeinfo est null
vous ne pouvez pas appeler isEmpty sur null, nous vérifions donc null avec?.
opérateur de navigation sécurisé qui appellera uniquement isEmpty lorsque l'objet n'est pas nul et produira null sinon. Nous avons donc juste besoin de vérifier null avec??
opérateur de coalescence nulJ'écrirais une fonction d'aide au lieu de tout faire en ligne.
bool isNullEmptyOrFalse(Object o) =>
o == null || false == o || "" == o;
bool isNullEmptyFalseOrZero(Object o) =>
o == null || false == o || 0 == o || "" == o;
Cela évite la recherche répétée (comme l'opération contains
), mais elle est beaucoup plus lisible. Il ne crée pas non plus de nouveau littéral List
pour chaque vérification (rendre la liste const pourrait résoudre ce problème).
if (isNullEmptyOrFalse(routeinfo["no_route"])) { ... }
Lorsque vous avez du mal à créer quelque chose de court et de lisible, créer une fonction d'aide bien nommée est généralement la meilleure solution.