Pular para o conteúdo principal

relational_pattern_operand_type_not_assignable

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

The constant expression type '{0}' is not assignable to the parameter type '{1}' of the '{2}' operator.

Descrição

#

O analisador emite este diagnóstico quando o operando de um padrão relacional tem um tipo que não é atribuível ao parâmetro do operador que será invocado.

Exemplo

#

O código a seguir gera este diagnóstico porque o operando no padrão relacional (0) é um int, mas o operador > definido em C espera um objeto do tipo C:

dart
class C {
  const C();
​
  bool operator >(C other) => true;
}
​
void f(C c) {
  switch (c) {
    case > 0:
      print('positive');
  }
}

Correções comuns

#

Se o switch está usando o valor correto, altere o case para comparar o valor com o tipo de objeto correto:

dart
class C {
  const C();
​
  bool operator >(C other) => true;
}
​
void f(C c) {
  switch (c) {
    case > const C():
      print('positive');
  }
}

Se o switch está usando o valor errado, altere a expressão usada para calcular o valor que está sendo comparado:

dart
class C {
  const C();
​
  bool operator >(C other) => true;
​
  int get toInt => 0;
}
​
void f(C c) {
  switch (c.toInt) {
    case > 0:
      print('positive');
  }
}

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