O Navigation 3 é uma nova biblioteca de navegação projetada para funcionar com o Compose. Com a Navegação 3, você tem controle total sobre a backstack, e navegar para e de destinos é tão simples quanto adicionar e remover itens de uma lista. Ele cria um sistema de navegação flexível para apps ao fornecer:
- Convenções para modelar uma backstack, em que cada entrada representa o conteúdo que o usuário acessou.
- Uma interface que é atualizada automaticamente com mudanças na pilha de retorno (incluindo animações)
- Um escopo para itens na backstack, permitindo que o estado seja retido enquanto um item está na backstack
- Um sistema de layout adaptável que permite mostrar vários destinos ao mesmo tempo e alternar entre eles sem problemas.
- Um mecanismo para o conteúdo se comunicar com o layout principal (metadados)
Em geral, você implementa a Navegação 3 das seguintes maneiras:
- Defina o conteúdo que os usuários podem acessar no app, cada um com uma chave exclusiva, e adicione uma função para resolver essa chave no conteúdo. Consulte Resolver chaves para conteúdo.
- Crie uma pilha de retorno em que as chaves são inseridas e removidas à medida que os usuários navegam pelo app. Consulte Criar uma pilha de retorno.
- Use um
NavDisplaypara mostrar a pilha de retorno do app. Sempre que a pilha de retorno muda, ela atualiza a interface para mostrar o conteúdo relevante. Consulte Mostrar a pilha de retorno. - Modifique as estratégias de cena do
NavDisplayconforme necessário para oferecer suporte a layouts adaptáveis e diferentes plataformas.
Confira o código-fonte completo da Navegação 3 no AOSP.
Melhorias na navegação do Jetpack
A Navigation 3 melhora a API Jetpack Navigation original das seguintes maneiras:
- Oferece uma integração mais simples com o Compose
- Oferece controle total da pilha de retorno
- Permite criar layouts que podem ler mais de um destino da pilha de retorno ao mesmo tempo, permitindo que eles se adaptem a mudanças no tamanho da janela e outras entradas.
Leia mais sobre os princípios e as opções de design de API da Navegação 3 nesta postagem do blog.
Exemplos de código
O repositório de receitas contém exemplos de como usar os blocos de construção do Navigation 3 para resolver desafios comuns de navegação.