Pular para o conteúdo principal

pattern_constant_from_deferred_library

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

Constant values from a deferred library can't be used in patterns.

Descrição

#

O analisador emite este diagnóstico quando um padrão contém um valor declarado em outra biblioteca, e essa biblioteca é importada usando um import deferred. Constantes são avaliadas em tempo de compilação, mas valores de bibliotecas deferred não estão disponíveis em tempo de compilação.

Para mais informações, consulte carregamento preguiçoso de uma biblioteca.

Exemplo

#

Dado um arquivo a.dart que define a constante zero:

dart
const zero = 0;

O código a seguir produz este diagnóstico porque o padrão de constante a.zero é importado usando um import deferred:

dart
import 'a.dart' deferred as a;
​
void f(int x) {
  switch (x) {
    case a.zero:
      // ...
      break;
  }
}

Correções comuns

#

Se você precisar referenciar a constante da biblioteca importada, então remova a palavra-chave deferred:

dart
import 'a.dart' as a;
​
void f(int x) {
  switch (x) {
    case a.zero:
      // ...
      break;
  }
}

Se você precisar referenciar a constante da biblioteca importada e também precisar que a biblioteca importada seja deferred, então reescreva o comando switch como uma sequência de comandos if:

dart
import 'a.dart' deferred as a;
​
void f(int x) {
  if (x == a.zero) {
    // ...
  }
}

Se você não precisar referenciar a constante, então substitua a expressão do case:

dart
void f(int x) {
  switch (x) {
    case 0:
      // ...
      break;
  }
}

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