Pular para o conteúdo principal

extension_declares_instance_field

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

Extensions can't declare instance fields.

Descrição

#

O analisador produz este diagnóstico quando uma declaração de campo de instância é encontrada em uma extensão. Não é válido definir um campo de instância porque extensões podem apenas adicionar comportamento, não estado.

Exemplo

#

O código a seguir produz este diagnóstico porque s é um campo de instância:

dart
extension E on String {
  String s = '';
}

Correções comuns

#

Se o valor puder ser calculado sem armazená-lo em um campo, tente usar um getter ou um método:

dart
extension E on String {
  String get s => '';
}

Se o valor precisar ser armazenado, mas for o mesmo para toda instância, tente usar um campo estático:

dart
extension E on String {
  static String s = '';
}

Se cada instância precisar ter seu próprio valor armazenado, tente usar um par de getter e setter apoiado por um Expando estático:

dart
extension E on String {
  static final _s = Expando<String>();
​
  String get s => _s[this] ?? '';
  set s(String value) => _s[this] = value;
}

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