Pular para o conteúdo principal

unchecked_use_of_nullable_value

Detalhes sobre o diagnóstico 'unchecked_use_of_nullable_value' produzido pelo analisador do Dart.

A nullable expression can't be used as a condition.

A nullable expression can't be used as an iterator in a for-in loop.

A nullable expression can't be used in a spread.

A nullable expression can't be used in a yield-each statement.

The function can't be unconditionally instantiated because it can be 'null'.

The function can't be unconditionally invoked because it can be 'null'.

The method '{0}' can't be unconditionally invoked because the receiver can be 'null'.

The operator '{0}' can't be unconditionally invoked because the receiver can be 'null'.

The property '{0}' can't be unconditionally accessed because the receiver can be 'null'.

Descrição

#

O analisador produz este diagnóstico quando uma expressão cujo tipo é potencialmente não anulávelPotentially non-nullableUm tipo que é non-nullable explicitamente ou por ser um parâmetro de tipo. Saiba mais é desreferenciada sem antes verificar se o valor não é null.

Exemplo

#

O código a seguir produz este diagnóstico porque s pode ser null no ponto em que é referenciado:

dart
void f(String? s) {
  if (s.length > 3) {
    // ...
  }
}

Correções comuns

#

Se o valor realmente pode ser null, então adicione um teste para garantir que os membros sejam acessados apenas quando o valor não for null:

dart
void f(String? s) {
  if (s != null && s.length > 3) {
    // ...
  }
}

Se a expressão é uma variável e o valor nunca deveria ser null, então altere o tipo da variável para não anulável:

dart
void f(String s) {
  if (s.length > 3) {
    // ...
  }
}

Se você acredita que o valor da expressão nunca deveria ser null, mas não pode alterar o tipo da variável, e está disposto a arriscar uma exceção em tempo de execução caso esteja errado, então você pode afirmar que o valor não é nulo:

dart
void f(String? s) {
  if (s!.length > 3) {
    // ...
  }
}

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.