Pular para o conteúdo principal

collection_element_from_deferred_library

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

Constant values from a deferred library can't be used as keys in a 'const' map literal.

Constant values from a deferred library can't be used as values in a 'const' constructor.

Constant values from a deferred library can't be used as values in a 'const' list literal.

Constant values from a deferred library can't be used as values in a 'const' map literal.

Constant values from a deferred library can't be used as values in a 'const' set literal.

Descrição

#

O analisador emite este diagnóstico quando um literal de coleção que é uma constante, seja explicitamente (por ser precedido pela palavra-chave const), seja implicitamente (por aparecer em um contexto constanteConstant contextUma região do código em que a keyword const está implícita e tudo dentro dessa região precisa ser constante. Saiba mais), contém um valor declarado em uma biblioteca importada com um import adiado (deferred). Constantes são avaliadas em tempo de compilação, e os valores de bibliotecas adiadas não estão disponíveis em tempo de compilação.

Para mais informações, consulte Carregando uma biblioteca sob demanda.

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 literal de lista constante contém a.zero, que é importado usando um import deferred:

dart
import 'a.dart' deferred as a;
​
var l = const [a.zero];

Correções comuns

#

Se o literal de coleção não precisar ser constante, remova a palavra-chave const:

dart
import 'a.dart' deferred as a;
​
var l = [a.zero];

Se a coleção precisar ser constante e a constante importada precisar ser referenciada, remova a palavra-chave deferred do import:

dart
import 'a.dart' as a;
​
var l = const [a.zero];

Se você não precisar referenciar a constante, substitua-a por um valor adequado:

dart
var l = const [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ê.