Navigation Event es una biblioteca que proporciona una solución de Kotlin Multiplatform (KMP) para integrar eventos de navegación a nivel del sistema en tu aplicación. Está diseñada para ser la capa fundamental que controla las indicaciones de navegación en varias plataformas compatibles.
Conceptos clave
El sistema de eventos de navegación se basa en un modelo centralizado de despachador y controlador, que se suele usar en una jerarquía principal-secundaria para asignar estructuras complejas de la IU, como las que se encuentran en Jetpack Compose.
NavigationEventDispatcher
NavigationEventDispatcher es la clase central responsable de administrar todos los consumidores de eventos de navegación registrados (NavigationEventHandler) y de coordinar el flujo de eventos.
En una configuración jerárquica, todos los despachadores dentro de la misma cadena comparten un solo NavigationEventProcessor, que administra el estado global y garantiza un orden de despacho único y unificado en todo el árbol.
NavigationEventHandler
NavigationEventHandler es una clase abstracta que recibe y controla eventos de navegación enviados por un NavigationEventDispatcher. Define métodos de devolución de llamada que corresponden a diferentes etapas del ciclo de vida de un gesto de navegación, como cuando se inicia, avanza, completa o cancela un gesto.
Los controladores pueden responder a estos eventos para actualizar la IU o el estado de la aplicación en respuesta a las acciones de navegación del usuario. Se pueden registrar varios controladores con un dispatcher y se invocan según la prioridad y el orden de registro.
NavigationEvent
NavigationEvent es una clase de datos que contiene los detalles del gesto de navegación.
NavigationEventInfo
NavigationEventInfo es una clase abstracta que proporciona información contextual sobre un estado de navegación.
NavigationEventInput
NavigationEventInput es una clase abstracta para los componentes que generan y envían eventos de navegación. Actúa como el lado de "entrada" del sistema de navegación, ya que traduce eventos específicos de la plataforma (como gestos de atrás del sistema o clics en botones) en eventos estandarizados que se pueden enviar a un NavigationEventDispatcher.
Instrucciones sobre cómo llegar y activadores compatibles
El sistema de eventos de navegación está diseñado para abarcar más que solo el botón Atrás del sistema, con diseños que admiten múltiples direcciones de navegación y métodos de entrada en todas las plataformas.
Indicaciones admitidas
Las diferentes plataformas admiten distintas direcciones de navegación:
Plataforma |
Atrás |
Aumento |
Reenviar |
Página principal |
Teléfono Android |
✅ |
✅ |
🚫 |
✅ |
Tablet con Android |
✅ |
✅ |
🚫 |
✅ |
Web (navegador) |
✅ |
✅ |
✅ |
🚫 |
iOS (iPhone/iPad) |
✅ |
🚫 |
✅ |
✅ |
Activadores compatibles
El procesamiento de entrada se logra a través de varios mecanismos en cada plataforma:
Activador |
Teléfono Android |
Web (navegador) |
iOS (iPhone/iPad) |
Botón Atrás del teclado |
✅ Atrás |
❓ |
✅ Atrás |
Botón Atrás de software |
🚫 |
✅ Atrás |
✅ Atrás |
Botón para subir la ventanilla |
✅ Arriba |
🚫 |
🚫 |
Gesto desde la izquierda |
✅ Atrás |
❓ |
✅ Atrás |
Gesto desde la derecha |
✅ Atrás |
❓ |
✅ Adelante |
Gesto desde la parte inferior |
✅ Principal |
🚫 |
✅ Principal |