Pular para o conteúdo principal

inconsistent_pattern_variable_logical_or

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

The variable '{0}' has a different type and/or finality in this branch of the logical-or pattern.

Descrição

#

O analisador produz este diagnóstico quando uma variável de padrão declarada em todos os ramos de um padrão de OU lógico não tem o mesmo tipo em cada ramo. Ele também é produzido quando a variável tem finalidade (finality) diferente em ramos diferentes. Uma variável de padrão declarada em vários ramos de um padrão de OU lógico precisa ter o mesmo tipo e a mesma finalidade em cada ramo, para que o tipo e a finalidade da variável possam ser conhecidos no código protegido pelo padrão de OU lógico.

Exemplos

#

O código a seguir produz este diagnóstico porque a variável a é definida como int em um ramo e como double no outro:

dart
void f(Object? x) {
  if (x case (int a) || (double a)) {
    print(a);
  }
}

O código a seguir produz este diagnóstico porque a variável a é final no primeiro ramo e não é final no segundo ramo:

dart
void f(Object? x) {
  if (x case (final int a) || (int a)) {
    print(a);
  }
}

Correções comuns

#

Se a finalidade da variável for diferente, decida se ela deve ser final ou não e torne os casos consistentes:

dart
void f(Object? x) {
  if (x case (int a) || (int a)) {
    print(a);
  }
}

Se o tipo da variável for diferente e o tipo não for crítico para a condição que está sendo comparada, então garanta que a variável tenha o mesmo tipo nos dois ramos:

dart
void f(Object? x) {
  if (x case (num a) || (num a)) {
    print(a);
  }
}

Se o tipo da variável for diferente e o tipo for crítico para a condição que está sendo comparada, então considere dividir a condição em várias instruções if ou cláusulas case:

dart
void f(Object? x) {
  if (x case int a) {
    print(a);
  } else if (x case double a) {
    print(a);
  }
}

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