ArgumentError.checkNotNull în Dart

Verifică dacă o valoare nu este null; o returnează ca tip nenul sau aruncă ArgumentError.

Sintaxă
static T checkNotNull<T>(T? argument, [String? name])

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 checkNotNull pe 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.