Pular para o conteúdo principal

undefined_instance_member_write

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

The field '{0}' of the type '{1}' is final, so it can't be assigned to.

The member '{0}' is declared in '{1}', but private names are visible only in their own library.

The setter '{0}' isn't defined for the type '{1}'.

The {0} '{1}' of the type '{2}' can't be assigned to.

There's a getter '{0}' for the type '{1}', but no setter.

Descrição

#

O analisador emite este diagnóstico quando um membro de instância recebe uma atribuição, mas nem o tipo estático do receptor nem nenhuma extensão aplicável possui um setter ou campo não final acessível com esse nome.

Exemplos

#

O código a seguir produz este diagnóstico porque C não possui um setter chamado z:

dart
class C {
  int x = 0;
}
​
void f(C c) {
  c.z = 0;
}

O código a seguir produz este diagnóstico porque C tem apenas um getter chamado x:

dart
class C {
  int get x => 0;
}
​
void f(C c) {
  c.x = 0;
}

O código a seguir produz este diagnóstico porque o campo x é final:

dart
class C {
  final int x = 0;
}
​
void f(C c) {
  c.x = 0;
}

Correções comuns

#

Se o setter que você pretende usar tiver outro nome, altere o nome para corresponder:

dart
class C {
  int x = 0;
}
​
void f(C c) {
  c.x = 0;
}

Se o setter for declarado em uma extensão que não foi importada, importe a biblioteca que declara a extensão.

Se o tipo tiver apenas um getter, adicione um setter com o mesmo nome:

dart
class C {
  int get x => 0;
​
  set x(int _) {}
}
​
void f(C c) {
  c.x = 0;
}

Se o campo for final, torne-o não final:

dart
class C {
  int x = 0;
}
​
void f(C c) {
  c.x = 0;
}

Caso contrário, remova a atribuição.

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