Anti-padrões a evitar
A maioria dos bugs acontece quando os modelos imperativo e declarativo são misturados. Mantenha uma fronteira rígida de estado.
Mistura de push/pop com páginas
Não chame Navigator.push/pop para pilhas que já são controladas por List<PageEntry>.
Widget no estado
Não coloque instâncias de Widget nos metadados da página. Mantenha apenas chaves e identificadores no estilo de rotas.
Chaves duplicadas
Não reutilize valores duplicados de PageEntry.key na mesma pilha.
Lista de verificação de migração
Use esta lista de verificação durante as revisões de refatoração para manter a arquitetura consistente.
Lista de verificação
Bom vs. ruim
// Ruim: misturar o imperativo e o declarativo para a mesma pilha
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
// Bom: atualize apenas o estado declarativo
setState(() {
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
Dica de revisão
Durante a revisão de código, acompanhe quem é responsável pelas mutações da pilha e rejeite mudanças que alterem a mesma pilha por meio de várias APIs.
Anterior
SobreposiçõesPróximo
Introdução