deferred_ import_ of_ extension
Detalhes sobre o diagnóstico 'deferred_import_of_extension' produzido pelo analisador do Dart.
Deferred library imports must hide all extension declarations.
Descrição
#
O analisador emite este diagnóstico quando uma biblioteca importada com
um import deferred declara uma extensão que está visível na biblioteca
que importa. Os métodos de extensão são resolvidos em tempo de compilação, e
extensões de bibliotecas deferred não estão disponíveis em tempo de
compilação.
Para mais informações, veja Carregando uma biblioteca de forma preguiçosa.
Exemplo
#Dado um arquivo a.dart que define uma extensão nomeada:
class C {}
extension E on String {
int get size => length;
}
O código a seguir gera este diagnóstico porque a extensão nomeada está visível para a biblioteca:
import 'a.dart' deferred as a;
void f() {
a.C();
}
Correções comuns
#
Se a biblioteca precisa ser importada como deferred, então adicione uma
cláusula show listando os nomes referenciados ou adicione uma cláusula
hide listando todas as extensões nomeadas. Adicionar uma cláusula show
ficaria assim:
import 'a.dart' deferred as a show C;
void f() {
a.C();
}
Adicionar uma cláusula hide ficaria assim:
import 'a.dart' deferred as a hide E;
void f() {
a.C();
}
Com a primeira correção, o benefício é que, se novas extensões forem adicionadas à biblioteca importada, elas não farão o diagnóstico ser gerado.
Se a biblioteca não precisa ser importada como deferred, ou se você
precisa usar o método de extensão declarado nela, então remova a palavra-chave
deferred:
import 'a.dart' as a;
void f() {
a.C();
}
Salvo indicação em contrário, a documentação neste site reflete Dart 3.13.7. Relatar um problema.
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ê.