Pular para o conteúdo principal

not_initialized_non_nullable_instance_field

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

Non-nullable instance field '{0}' must be initialized.

Descrição

#

O analisador emite este diagnóstico quando um campo é declarado e possui todas estas características:

  • Tem um tipo potencialmente não anulávelPotentially non-nullableUm tipo que é non-nullable explicitamente ou por ser um parâmetro de tipo. Saiba mais
  • Não tem inicializador
  • Não está marcado como late

Exemplos

#

O código a seguir produz este diagnóstico porque x é implicitamente inicializado com null quando não é permitido que seja null:

dart
class C {
  int x;
}

De forma semelhante, o código a seguir produz este diagnóstico porque x é implicitamente inicializado com null, quando não é permitido, por um dos construtores, mesmo que seja inicializado pelos outros construtores:

dart
class C {
  int x;
​
  C(this.x);
​
  C.n();
}

Correções comuns

#

Se houver um valor padrão razoável para o campo que seja o mesmo para todas as instâncias, então adicione uma expressão de inicialização:

dart
class C {
  int x = 0;
}

Se o valor do campo deve ser informado quando uma instância é criada, então adicione um construtor que defina o valor do campo ou atualize um construtor existente:

dart
class C {
  int x;
​
  C(this.x);
}

Você também pode marcar o campo como late, o que remove o diagnóstico, mas se o campo não receber um valor antes de ser acessado, então uma exceção é lançada em tempo de execução. Essa abordagem só deve ser usada se você tiver certeza de que o campo sempre será atribuído antes de ser referenciado.

dart
class C {
  late int x;
}

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ê.