Ce face ArgumentError.checkNotNull
ArgumentError.checkNotNull(valoare, 'nume') aruncă un ArgumentError (Must not be null) dacă valoarea este null. Altfel o returnează, cu tipul nenul: din String? primești String.
De la siguranța la null (Dart 2.12), compilatorul verifică singur majoritatea cazurilor, așa că metoda se folosește mai rar. Rămâne utilă când valoarea vine din locuri pe care compilatorul nu le poate verifica: un Map, date JSON, cod dynamic. Față de operatorul !, mesajul erorii conține numele valorii lipsă.
Parametri
| Parametru | Descriere |
|---|---|
argument |
Valoarea verificată. |
name |
Numele folosit în mesajul erorii. |
Ce returnează
Valoarea, cu tipul nenul T.
Exemple
Exemplul 1: Valori obligatorii dintr-un Map
void main() {
var setari = <String, String?>{'oras': 'Iași', 'limba': null};
String oras = ArgumentError.checkNotNull(setari['oras'], 'oras');
print(oras.toUpperCase());
try {
ArgumentError.checkNotNull(setari['limba'], 'limba');
} on ArgumentError catch (e) {
print(e);
}
}
Rezultat
IAȘI
Invalid argument(s) (limba): Must not be null
Exemplul 2: Comparație cu operatorul !
Ambele opresc o valoare null, dar checkNotNull spune care câmp lipsește.
void main() {
Map<String, dynamic> json = {'nume': 'Ana', 'email': null};
try {
var email = json['email'] as String?;
print(email!.length);
} on TypeError catch (e) {
print('Cu !: ${e.runtimeType}');
}
try {
ArgumentError.checkNotNull(json['email'], 'email');
} on ArgumentError catch (e) {
print('Cu checkNotNull: ${e.name} - ${e.message}');
}
}
Rezultat
Cu !: _TypeError
Cu checkNotNull: email - Must not be null
Greșeli frecvente
- Folosești
checkNotNullpe variabile care sunt deja de tip nenul: verificarea este inutilă, compilatorul garantează deja asta.
Comenzi înrudite
ArgumentError: Eroarea aruncată când o funcție primește un argument nepermis; ArgumentError.value include și valoarea greșită.null safety (? ! ?? ??=): Tipurile nu pot fi null decât dacă au ?; operatorii !, ?? și ??= lucrează cu valorile care pot lipsi.?. și ?..: Accesul condiționat: ?. apelează o metodă doar dacă obiectul nu este null, altfel dă null.