Navegação 3

A Navigation 3 é uma nova biblioteca de navegação projetada para funcionar com o Compose. Com a Navigation 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 flexível de navegação de apps com:

  • Convenções para modelar uma backstack, em que cada entrada na backstack representa o conteúdo para o qual o usuário navegou
  • Uma interface que é atualizada automaticamente com mudanças na backstack (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 que vários destinos sejam exibidos ao mesmo tempo e que permite alternar sem problemas entre esses layouts
  • Um mecanismo para o conteúdo se comunicar com o layout pai (metadados)

Em um nível alto, você implementa a Navegação 3 das seguintes maneiras:

  1. Defina o conteúdo para o qual os usuários podem navegar no app, cada um com uma chave única, e adicione uma função para resolver essa chave no conteúdo. Consulte Resolver chaves de conteúdo.
  2. Crie uma backstack em que as chaves sejam enviadas e removidas conforme os usuários navegam pelo app. Consulte Criar uma backstack.
  3. Use um NavDisplay para mostrar a backstack do app. Sempre que a backstack muda, ela atualiza a interface para mostrar conteúdo relevante. Consulte Exibir a backstack.
  4. Modifique as estratégias de cena do NavDisplay conforme necessário para oferecer suporte a layouts adaptáveis e diferentes plataformas.

Confira o código-fonte completo da Navigation 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 backstack
  • Permite criar layouts que podem ler mais de um destino da backstack ao mesmo tempo, permitindo que eles se adaptem a mudanças no tamanho da janela e outras entradas.

Leia mais sobre os princípios da Navigation 3 e as escolhas de design de API nesta postagem do blog.

Exemplos de código

O repositório de receitas contém exemplos de como usar os blocos de construção da Navigation 3 para resolver desafios comuns de navegação.