Navigation Event è una libreria che fornisce una soluzione Kotlin Multiplatform (KMP) per integrare gli eventi di navigazione a livello di sistema nella tua applicazione. È progettato per essere il livello di base per la gestione delle indicazioni stradali su varie piattaforme supportate.
Concetti principali
Il sistema di eventi di navigazione è basato su un modello di dispatcher-handler centralizzato, spesso utilizzato in una gerarchia padre-figlio per mappare strutture UI complesse, come quelle presenti in Jetpack Compose.
NavigationEventDispatcher
NavigationEventDispatcher è la classe centrale responsabile della
gestione di tutti i consumer di eventi di navigazione registrati
(NavigationEventHandler) e dell'orchestrazione del flusso di eventi.
In una configurazione gerarchica, tutti i dispatcher all'interno della stessa catena condividono un unico
NavigationEventProcessor, che gestisce lo stato globale e garantisce un unico
ordine di distribuzione unificato in tutto l'albero.
NavigationEventHandler
NavigationEventHandler è una classe astratta che riceve e gestisce
gli eventi di navigazione inviati da un NavigationEventDispatcher. Definisce
i metodi di callback che corrispondono alle diverse fasi del ciclo di vita di un gesto di navigazione, ad esempio quando un gesto inizia, progredisce, viene completato o viene
annullato.
I gestori possono rispondere a questi eventi per aggiornare lo stato dell'interfaccia utente o dell'applicazione in risposta alle azioni di navigazione dell'utente. È possibile registrare più gestori con un dispatcher e vengono richiamati in base alla priorità e all'ordine di registrazione.
NavigationEvent
NavigationEvent è una classe di dati che contiene i dettagli del gesto di navigazione.
NavigationEventInfo
NavigationEventInfo è una classe astratta che fornisce informazioni contestuali
su uno stato di navigazione.
NavigationEventInput
NavigationEventInput è una classe astratta per i componenti che generano
e inviano eventi di navigazione. Funge da "input" del sistema di navigazione, traducendo eventi specifici della piattaforma (come i gesti di sistema indietro o i clic sui pulsanti) in eventi standardizzati che possono essere inviati a un NavigationEventDispatcher.
Indicazioni stradali e trigger supportati
Il sistema di eventi di navigazione è progettato per comprendere più del semplice pulsante Indietro del sistema, con design che supportano più direzioni di navigazione e metodi di input su più piattaforme.
Indicazioni supportate
Diverse piattaforme supportano indicazioni di navigazione variabili:
Piattaforma |
Indietro |
Su |
Inoltra |
Home |
Smartphone Android |
✅ |
✅ |
🚫 |
✅ |
Tablet Android |
✅ |
✅ |
🚫 |
✅ |
Web (browser) |
✅ |
✅ |
✅ |
🚫 |
iOS (iPhone/iPad) |
✅ |
🚫 |
✅ |
✅ |
Trigger supportati
La gestione dell'input viene eseguita tramite vari meccanismi su ogni piattaforma:
Trigger |
Smartphone Android |
Web (browser) |
iOS (iPhone/iPad) |
Pulsante Indietro della tastiera |
✅ Indietro |
❓ |
✅ Indietro |
Pulsante Indietro software |
🚫 |
✅ Indietro |
✅ Indietro |
Pulsante di aggiornamento software |
✅ Up |
🚫 |
🚫 |
Gesto da sinistra |
✅ Indietro |
❓ |
✅ Indietro |
Gesto da destra |
✅ Indietro |
❓ |
✅ Avanti |
Gesto dal basso |
✅ Home |
🚫 |
✅ Home |