Navigation Event est une bibliothèque qui fournit une solution Kotlin Multiplatform (KMP) pour intégrer des événements de navigation au niveau du système dans votre application. Il est conçu pour être la couche de base de la gestion des instructions de navigation sur les différentes plates-formes compatibles.
Concepts clés
Le système d'événements de navigation est basé sur un modèle centralisé de répartiteur-gestionnaire, souvent utilisé dans une hiérarchie parent-enfant pour mapper des structures d'UI complexes, telles que celles trouvées dans Jetpack Compose.
NavigationEventDispatcher
NavigationEventDispatcher est la classe centrale responsable de la gestion de tous les consommateurs d'événements de navigation enregistrés (NavigationEventHandler) et de l'orchestration du flux d'événements.
Dans une configuration hiérarchique, tous les dispatchers d'une même chaîne partagent un seul NavigationEventProcessor, qui gère l'état global et garantit un ordre de répartition unique et unifié dans l'ensemble de l'arborescence.
NavigationEventHandler
NavigationEventHandler est une classe abstraite qui reçoit et gère les événements de navigation déclenchés par un NavigationEventDispatcher. Il définit les méthodes de rappel qui correspondent aux différentes étapes du cycle de vie d'un geste de navigation, par exemple lorsqu'un geste commence, progresse, se termine ou est annulé.
Les gestionnaires peuvent répondre à ces événements pour mettre à jour l'état de l'UI ou de l'application en réponse aux actions de navigation de l'utilisateur. Plusieurs gestionnaires peuvent être enregistrés auprès d'un répartiteur et sont appelés en fonction de la priorité et de l'ordre d'enregistrement.
NavigationEvent
NavigationEvent est une classe de données qui contient les détails du geste de navigation.
NavigationEventInfo
NavigationEventInfo est une classe abstraite qui fournit des informations contextuelles sur un état de navigation.
NavigationEventInput
NavigationEventInput est une classe abstraite pour les composants qui génèrent et distribuent des événements de navigation. Il agit comme le côté "entrée" du système de navigation, en traduisant les événements spécifiques à la plate-forme (comme les gestes de retour système ou les clics sur les boutons) en événements standardisés qui peuvent être envoyés à un NavigationEventDispatcher.
Déclencheurs et itinéraires de navigation acceptés
Le système d'événements de navigation est conçu pour englober plus que le simple bouton Retour du système, avec des conceptions prenant en charge plusieurs directions de navigation et méthodes de saisie sur différentes plates-formes.
Directions acceptées
Différentes plates-formes prennent en charge différentes directions de navigation :
Plate-forme |
Retour |
Haut |
Transférer |
Accueil |
Téléphone Android |
✅ |
✅ |
🚫 |
✅ |
Tablette Android |
✅ |
✅ |
🚫 |
✅ |
Web (navigateur) |
✅ |
✅ |
✅ |
🚫 |
iOS (iPhone/iPad) |
✅ |
🚫 |
✅ |
✅ |
Déclencheurs acceptés
La gestion des entrées est assurée par différents mécanismes sur chaque plate-forme :
Déclencheur |
Téléphone Android |
Web (navigateur) |
iOS (iPhone/iPad) |
Bouton Retour du clavier |
✅ Retour |
❓ |
✅ Retour |
Bouton Retour logiciel |
🚫 |
✅ Retour |
✅ Retour |
Bouton logiciel "Haut" |
✅ En hausse |
🚫 |
🚫 |
Balayer l'écran de gauche à droite |
✅ Retour |
❓ |
✅ Retour |
Balayer de la droite vers la gauche |
✅ Retour |
❓ |
✅ Transférer |
Balayer l'écran de bas en haut |
✅ Accueil |
🚫 |
✅ Accueil |