Instalação

Adicione o pacote e depois mova a navegação e os overlays para um estado explícito. Mantenha push/pop imperativos fora da mesma pilha.

Uma única dependência

Instale com um único comando pub. Nenhuma configuração de geração de código é necessária.

API orientada ao estado

Você controla uma List<PageEntry> e um OverlayRequest opcional como estado puro.

Adoção incremental

Comece com um fluxo de recurso e migre tela por tela.

Instalar e inicializar

Use pub add e depois conecte o estado raiz inicial para páginas e overlay.

Comando

Estado inicial do app

import 'package:declarative_nav/declarative_nav.dart';

class _AppRootState extends State<AppRoot> {
  OverlayRequest? _overlay;
  late List<PageEntry> _pages;

  @override
  void initState() {
    super.initState();
    _pages = const [
      PageEntry(key: 'home', name: '/home'),
    ];
  }
}
Restrição

Dentro de uma única pilha, PageEntry.key deve permanecer único porque ela se torna a identidade da página no Navigator.