Pular para o conteúdo principal

field_initialized_in_initializer_and_declaration

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

Fields can't be initialized in the constructor if they are final and were already initialized at their declaration.

Descrição

#

O analisador produz este diagnóstico quando um campo final é inicializado tanto na declaração do campo quanto em um inicializador em um construtor. Campos final só podem receber atribuição uma vez, então não podem ser inicializados nos dois lugares.

Exemplo

#

O código a seguir produz este diagnóstico porque f é :

dart
class C {
  final int f = 0;
  C() : f = 1;
}

Correções comuns

#

Se a inicialização não depender de nenhum valor passado ao construtor, e se todos os construtores precisarem inicializar o campo com o mesmo valor, remova o inicializador do construtor:

dart
class C {
  final int f = 0;
  C();
}

Se a inicialização depender de um valor passado ao construtor, ou se construtores diferentes precisarem inicializar o campo de forma diferente, remova o inicializador da declaração do campo:

dart
class C {
  final int f;
  C() : f = 1;
}

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