Evento de navegação

O Navigation Event é uma biblioteca que oferece uma solução multiplataforma do Kotlin (KMP) para integrar eventos de navegação no nível do sistema ao seu aplicativo. Ela foi projetada para ser a camada fundamental no processamento de rotas de navegação em várias plataformas compatíveis.

Principais conceitos

O sistema de eventos de navegação é criado em torno de um modelo centralizado de despachante-processador, geralmente usado em uma hierarquia pai-filho para mapear estruturas de UI complexas, como as encontradas no Jetpack Compose.

O NavigationEventDispatcher é a classe central responsável por gerenciar todos os consumidores de eventos de navegação registrados (NavigationEventHandler) e orquestrar o fluxo de eventos.

Em uma configuração hierárquica, todos os despachantes na mesma cadeia compartilham um único NavigationEventProcessor, que gerencia o estado global e garante uma ordem de despacho única e unificada em toda a árvore.

NavigationEventHandler é uma classe abstrata que recebe e processa eventos de navegação enviados por um NavigationEventDispatcher. Ele define métodos de callback que correspondem a diferentes estágios de um ciclo de vida de gesto de navegação, como quando um gesto começa, progride, é concluído ou é cancelado.

Os manipuladores podem responder a esses eventos para atualizar a interface ou o estado do aplicativo em resposta às ações de navegação do usuário. Vários manipuladores podem ser registrados com um dispatcher e são invocados com base na prioridade e na ordem de registro.

NavigationEvent é uma classe de dados que contém os detalhes do gesto de navegação.

NavigationEventInfo é uma classe abstrata que fornece informações contextuais sobre um estado de navegação.

NavigationEventInput é uma classe abstrata para componentes que geram e enviam eventos de navegação. Ele atua como o lado de "entrada" do sistema de navegação, traduzindo eventos específicos da plataforma (como gestos de retorno do sistema ou cliques de botão) em eventos padronizados que podem ser enviados para um NavigationEventDispatcher.

Rotas e gatilhos compatíveis

O sistema de eventos de navegação foi projetado para abranger mais do que apenas o botão "Voltar" do sistema, com designs que oferecem suporte a várias direções de navegação e métodos de entrada em várias plataformas.

Direções aceitas

Plataformas diferentes oferecem suporte a direções de navegação variadas:

Plataforma

Voltar

Acima

Avançar

Início

Smartphones Android

🚫

Tablets Android

🚫

Web (navegador)

🚫

iOS (iPhone/iPad)

🚫

Acionadores compatíveis

O processamento de entrada é feito por vários mecanismos em cada plataforma:

Acionador

Smartphone Android

Web (navegador)

iOS (iPhone/iPad)

Botão "Voltar" do teclado

✅ Voltar

✅ Voltar

Botão "Voltar" de software

🚫

✅ Voltar

✅ Voltar

Botão de aumentar o software

✅ Aumento

🚫

🚫

Gesto da esquerda

✅ Voltar

✅ Voltar

Gesto da direita

✅ Voltar

✅ Encaminhar

Gesto de baixo para cima

✅ Início

🚫

✅ Início