Pular para o conteúdo principal

undefined_instance_member_read

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

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

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

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

Descrição

#

O analisador emite este diagnóstico quando um membro de instância é lido, invocado ou extraído (tear-off), mas nem o tipo estático do receptor nem nenhuma extensão aplicável possui um método, getter ou campo acessível com esse nome.

Exemplos

#

O código a seguir produz este diagnóstico porque String não possui um membro chamado len:

dart
int f(String s) => s.len;

O código a seguir produz este diagnóstico porque List<int> não possui um membro chamado middleIndex:

dart
int f(List<int> l) => l.middleIndex();

O código a seguir produz este diagnóstico porque C tem apenas um setter chamado x, que não pode ser lido:

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

Correções comuns

#

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

dart
int f(String s) => s.length;

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

Se o membro não estiver definido, defina-o no tipo do receptor ou em uma extensão que se aplique a esse tipo:

dart
extension on List<int> {
  int middleIndex() => length ~/ 2;
}
​
int f(List<int> l) => l.middleIndex();

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

dart
class C {
  int get x => 0;
​
  set x(int _) {}
}
​
int f(C c) => c.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ê.