Pular para o conteúdo principal

duplicate_pattern_field

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

The field '{0}' is already matched in this pattern.

Descrição

#

O analisador emite este diagnóstico quando um padrão de record compara o mesmo campo mais de uma vez, ou quando um padrão de objeto compara o mesmo getter mais de uma vez.

Exemplos

#

O código a seguir gera este diagnóstico porque o campo de record a é comparado duas vezes no mesmo padrão de record:

dart
void f(({int a, int b}) r) {
  switch (r) {
    case (a: 1, a: 2):
      return;
  }
}

O código a seguir gera este diagnóstico porque o getter f é comparado duas vezes no mesmo padrão de objeto:

dart
void f(Object o) {
  switch (o) {
    case C(f: 1, f: 2):
      return;
  }
}
​
class C {
  int? f;
}

Correções comuns

#

Se o padrão deve valer para mais de um valor do campo duplicado, então use um padrão de OU lógico:

dart
void f(({int a, int b}) r) {
  switch (r) {
    case (a: 1, b: _) || (a: 2, b: _):
      break;
  }
}

Se o padrão deve comparar vários campos, então altere o nome de um dos campos:

dart
void f(({int a, int b}) r) {
  switch (r) {
    case (a: 1, b: 2):
      return;
  }
}

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