Pular para o conteúdo principal

illegal_concrete_enum_member

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

A concrete instance member named '{0}' can't be declared in a class that implements 'Enum'.

A concrete instance member named '{0}' can't be inherited from '{1}' in a class that implements 'Enum'.

Descrição

#

O analisador produz este diagnóstico quando uma declaração de enum, uma classe que implementa Enum, ou um mixin com restrição de superclasse Enum, declara ou herda um membro de instância concreto chamado index, hashCode ou ==.

Exemplos

#

O código a seguir produz este diagnóstico porque o enum E declara um getter de instância chamado index:

dart
enum E {
  v;
​
  @override
  int get index => 0;
}

O código a seguir produz este diagnóstico porque a classe C, que implementa Enum, declara um campo de instância chamado hashCode:

dart
abstract class C implements Enum {
  @override
  int hashCode = 0;
}

O código a seguir produz este diagnóstico porque a classe C, que implementa Enum indiretamente por meio da classe A, declara um getter de instância chamado hashCode:

dart
abstract class A implements Enum {}
​
abstract class C implements A {
  @override
  int get hashCode => 0;
}

O código a seguir produz este diagnóstico porque o mixin M, que tem Enum na cláusula on, declara um operador explícito chamado ==:

dart
mixin M on Enum {
  @override
  bool operator ==(Object other) => false;
}

Correções comuns

#

Renomeie o membro em conflito:

dart
enum E {
  v;
​
  int get getIndex => 0;
}

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