Orientação gerada a partir de informações públicas. Apenas para referência.
Routemaster é uma solução leve e fácil de usar para roteamento em aplicativos Flutter para web, mobile e desktop. Permite navegação baseada em URL com suporte a rotas aninhadas e navegação por guias, simplificando o gerenciamento de rotas complexas. Criado com simplicidade e experiência do desenvolvedor em mente, o Routemaster se integra perfeitamente a projetos existentes do Flutter. Sua API limpa permite manipular transições de rota, parâmetros dinâmicos e links profundos de forma intuitiva. Ideal para aplicativos que exigem navegação estruturada sem código boilerplate.
Casos de uso
Aplicações de página única com conteúdo dinâmico
Interfaces multi-folha em dispositivos móveis e na web
Estruturas de rota aninhadas em interfaces complexas
Linking profundo e sincronização de URL
Aplicativos multiplataforma que precisam de roteamento consistente
Navegação simples com configuração mínima
Principais recursos
Roteamento baseado em URL
Suporte para rotas aninhadas e com guias
Boilerplate mínimo
Compatibilidade multiplataforma
Integração fácil com aplicativos Flutter existentes
Parâmetros de rota dinâmicos
Indicado para
Desenvolvedores construindo aplicativos cross-platform com Flutter
Equipes que priorizam uma lógica de roteamento limpa e sustentável
Projetos que exigem links profundos ou comportamento semelhante a SPA
Aplicativos com hierarquias de navegação complexas
Iniciantes procurando uma solução intuitiva de roteamento
Considerações
Limitado ao modelo nativo de navegação do Flutter
Pode exigir gerenciamento adicional de estado para casos de uso avançados
Não ideal para comportamentos de roteamento altamente personalizados além dos padrões padrão
Sem suporte embutido para guardas de rota ou redirecionamentos de autenticação
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
Routemaster
Hello! Routemaster is an easy-to-use router for Flutter, which wraps over Flutter's Router API.
Features
Simple declarative mapping from URLs to pages
Easy-to-use API: just Routemaster.of(context).push('/page')
Really easy nested navigation support for tabs
Multiple route maps: for example one for a logged in user, another for logged out
Observers to easily listen to route changes
Covered by over 250 unit, widget and integration tests
Here's the entire routing setup needed for an app featuring tabs and pushed routes:
Routemaster generates pages based on the current path. This is the key concept of its path-base routing. Path structure matters.
It uses the path to decide where a page should be pushed. This means the path needs to match your intended page hierarchy.
For example:
'/tabs': (route) => TabPage(child: HomePage(), paths: ['one', 'two']),
// First tab default page'/tabs/one': (route) => MaterialPage(child: TabOnePage()),
// Second tab default page'/tabs/two': (route) => MaterialPage(child: TabTwoPage()),
// Second tab sub-page: will be displayed in the 2nd tab because it// starts with '/tabs/two''/tabs/two/subpage': (route) => MaterialPage(child: TabTwoPage()),
// Not a tab page: will not be displayed in in a tab// because the path doesn't start with '/tabs/one' or '/tabs/two''/tabs/notInATab': (route) => MaterialPage(child: NotTabPage()),
Any child paths that begin with /tabs/one or /tabs/two will be pushed into the correct tab.
When navigating to /tabs/two/subpage, the TabPage will be asked "hey, do you know how to handle this path?" and it'll go "sure! it starts with /tabs/two, so it goes in my second tab".
However, navigating to /tabs/notInATab will not be displayed in a tab, but pushed on top of the tab bar.
TabPage will be all "yeah sorry, no idea what to do with that, doesn't match any of my tab paths" and its parent will be asked to hande it.