Primeiro Contato com Navigation no Compose

Gabriel Bronzatti Moro
Android Dev BR
Published in
2 min readJan 21, 2022
Bússola apontando para o norte

Navegação entre telas é algo fundamental em qualquer aplicativo, o usuário precisa ter segurança de acessar novas telas e voltar por onde ele passou. A biblioteca de navegação do Jetpack nos possibilita gerenciar a complexidade do fluxo de telas, ou seja, destinos. Antes do Compose, esses destinos eram Fragmentos. O que muda usando Compose? 🤔

Minha ideia com esse artigo é mostrar um pouquinho do meu primeiro contato com Navigation 🧭 no Compose. 🤗

Grafo de Navegação

No grafo de navegação deve ser definido os destinos das rotas, no nosso caso, os destinos serão funções Compose. Além disso, podemos definir navegações internas no grafo. No exemplo a baixo vou mostrar um NavGraph do projeto pessoal que tenho desenvolvido:

Visualizamos no exemplo dois “grafos internos” de navegação. O primeiro é um fluxo de “On Boarding”, o qual ocorre uma única vez. O outro fluxo é o “Dashboard”, a tela principal.

Rotas

As rotas são simplesmente identificadores. Em um arquivo qualquer, você pode definir o nome de todas as rotas da maneira que você achar mais intuitivo. Um outro exemplo:

Parâmetros

A passagem de parâmetros para tipos primitivos é suportada pela biblioteca de navegação, como no meu caso eu precisava passar um objeto, a forma que encontrei foi criar um novo tipo de parâmetro:

O novo tipo de parâmetro será usado em um dos destinos, com isso precisamos adicionar ao nosso grafo uma nova rota com esse argumento:

Depois da criação de um parâmetro customizado é possível passar o argumento na própria rota:

Controle de Navegação

A navegação entre as telas é realizada a partir de um controle de navegação, o qual é compartilhado entre todas as funções Compose (telas). Para realizar a navegação passando um argumento, conforme mostrado no exemplo anterior do parâmetro customizado, basta realizar a seguinte chamada:

Conclusão

Todo o primeiro contato nos tira da zona de conforto, eu estava acostumado com a biblioteca anterior de navegação. Mas depois de entender melhor, fazer funcionar, faz bastante sentido utilizar. Espero ter contribuído 🤗

--

--