recursive_ constructor_ redirect
Detalhes sobre o diagnóstico 'recursive_constructor_redirect' produzido pelo analisador do Dart.
Constructors can't redirect to themselves either directly or indirectly.
Descrição
#O analisador emite este diagnóstico quando um construtor redireciona para si mesmo, direta ou indiretamente, criando um loop infinito.
Exemplos
#
O código a seguir gera este diagnóstico porque os construtores generativos C.a e C.b
redirecionam um para o outro:
class C {
C.a() : this.b();
C.b() : this.a();
}
O código a seguir gera este diagnóstico porque os construtores de fábrica A e B
redirecionam um para o outro:
abstract class A {
factory A() = B;
}
class B implements A {
factory B() = A;
B.named();
}
Correções comuns
#No caso de construtores generativos, quebre o ciclo fazendo com que pelo menos um dos construtores não redirecione para outro construtor:
class C {
C.a() : this.b();
C.b();
}
No caso de construtores de fábrica, quebre o ciclo fazendo com que pelo menos um dos construtores de fábrica faça uma das seguintes coisas:
- Redirecionar para um construtor generativo:
abstract class A {
factory A() = B;
}
class B implements A {
factory B() = B.named;
B.named();
}
- Não redirecionar para outro construtor:
abstract class A {
factory A() = B;
}
class B implements A {
factory B() {
return B.named();
}
B.named();
}
- Não ser um construtor de fábrica:
abstract class A {
factory A() = B;
}
class B implements A {
B();
B.named();
}
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ê.