navigationevent
| Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
|---|---|---|---|---|
| 24 septembre 2025 | - | - | - | 1.0.0-alpha09 |
Déclarer des dépendances
Pour ajouter une dépendance à navigationevent, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.
Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou de votre module :
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-alpha09" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-alpha09") }
Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.
Commentaires
Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.
Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.
Aucune note de version pour cet artefact.
Version 1.0
Version 1.0.0-alpha09
24 septembre 2025
Publication d'androidx.navigationevent:navigationevent-*:1.0.0-alpha09. La version 1.0.0-alpha09 contient ces commits.
Modifications apportées à l'API
- Utilisez directement l'objet singleton
NavigationEventTransitionState.Idleau lieu d'instancierIdle(). (Ic7d9e, b/444734264) - Rendez les constructeurs pratiques internes. Obtenez des instances via
NavigationEventDispatcher.historypublic au lieu d'une construction directe. (I3b7e0, b/444734264) - La création de
NavigationEventStateviarememberNavigationEventStateest désormais requise. Le constructeur est désormais interne. (Ie143c, b/444734264) - Adoptez
onBackCompletedFallbackpour remplacer les utilisations et le paramètre du constructeurfallbackOnBackPressed. Le comportement reste inchangé. L'événement n'est appelé que pour les événements "Retour" terminés et non gérés. (Idabe9, b/444734264) - Le constructeur principal de
NavigationEventHistory(mergedHistory, currentIndex)est désormaisinternal. Les consommateurs externes doivent utiliser les constructeurs publics (le constructeur vide ou le constructeur basé sur une partition) pour créer des instances. (I1c047, b/444734264) - Autoriser
View.setViewTreeNavigationEventDispatcherOwnerà accepter un propriétaire pouvant avoir une valeur nulle (Ic9eb6, b/444436762) NavigationEventInfoest désormais unabstract classau lieu d'uninterface. Mettez à jour toutes les implémentations personnalisées pour qu'elles héritent de la classe (par exemple,data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)- L'ancienne propriété
NavigationEventDispatcher.stateet l'ancienne fonctiongetState<T>()ont été supprimées. Utilisez les nouveaux flux distinctsdispatcher.transitionState(pour la progression du geste) etdispatcher.history(pour la pile de navigation). (Ic2ceb, b/444734264) - Le rappel
NavigationEventInput.onInfoChanged(...)est remplacé. Implémentez le nouveau rappelonHistoryChanged(history: NavigationEventHistory)pour recevoir les mises à jour sous la forme d'un seul objetNavigationEventHistory. (I23e0b, b/444734264) - Introduire un nouveau
NavigationEventDispatcher.historyglobalStateFlow. Ce flux non générique permet aux observateurs de s'abonner uniquement aux modifications de la pile de navigation et reste stable pendant la progression du geste. Il s'agit de l'équivalent detransitionState. (I1db10, b/444734264) - Introduire un nouveau
NavigationEventDispatcher.transitionStateglobalStateFlow. Ce flux non générique permet aux observateurs de s'abonner uniquement à l'état du geste physique (Idle/InProgress), indépendamment de l'historique. (I171fa, b/444734264) - Présentez la classe
NavigationEventHistoryState. Elle servira d'API principale pour observer l'historique des informations de navigation, distinct de l'état des gestes. (I81ca5, b/444734264) NavigationEventest désormais marqué comme@Immutable, ce qui permet au compilateur Compose d'optimiser les recompositions. (If78c7, b/444734264)- Les API du gestionnaire
navigationevent-composesont mises à jour.NavigationEventHandleretNavigationBackHandler(et leurs variantes) sont désormais compatibles avec une nouvelle surcharge qui accepte lesNavigationEventStatehissés. Les surcharges simples (prenantcurrentInfo) sont conservées et utilisent désormais ce nouveau modèle d'état en interne. (Ic3251, b/444734264) - Ajoutez le nouveau support d'état
@StableNavigationEventState<T>à la bibliothèquenavigationevent-compose. Cet objet combine l'historique local avec l'état du geste local et constituera le lien principal entrerememberNavigationEventStateetNavigationEventHandler. (Ifb69f, b/444734264) - Ajoutez une propriété
transitionState: TransitionStatepublique et en lecture seule àNavigationEventHandler. Les gestionnaires conservent désormais leur propre état de transition, que les systèmes externes peuvent observer. (I9acd2, b/444734264) - Présentation de la nouvelle classe scellée
TransitionState. Il s'agira de l'API principale pour observer l'état des gestes, indépendamment de l'historique de navigation. (Id4beb, b/444734264) - Exposez
currentInfo,backInfoetforwardInfoen tant que propriétés publiques en lecture seule surNavigationEventHandler. (Ia7636, b/444734264) - Les implémentations de
NavigationEventHandlerdoivent désormais fournir une valeurinitialInfo: Tau constructeur de base. (Idcfea, b/444734264) - Remplacez
OnBackInvokedInputparOnBackInvokedOverlayInputouOnBackInvokedDefaultInput. (I5323f, b/428948766) - Marquez
NavigationEventStatecomme@Immutable. Cela améliore les performances de Compose en garantissant que les composables qui observent cet état peuvent correctement ignorer la recomposition. (I399c8) - Renommez
NavigationEventInfo.NotProvidedenNavigationEventInfo.None;et mettez à jour les références. Aucun changement de comportement. (I5e2d4) NavigationEventInfoest désormais marqué comme@Immutable, ce qui permet au compilateur Compose d'optimiser les recompositions. (I7c112)- Améliorez l'ergonomie Java avec une interface amusante pour la solution de repli de saisie à l'arrière. (I8a860)
onHasEnabledHandlerChangeda été renomméonHasEnabledHandlersChanged. Cela précise que le rappel indique l'état d'activation collectif de tous les gestionnaires, et pas seulement d'un seul. (I1af61, b/443711297)- Supprimez
hasEnabledHandler()deNavigationEventDispatcher;et utilisezNavigationEventInput.onHasEnabledHandlersChangedà la place. (Idef72, b/443711297) - Ajoutez un rappel
onInfoChangedàNavigationEventInputpour informer les écouteurs des modifications apportées à l'historique de navigation. Cela fournit le contexte complet des piles actuelles, précédentes et suivantes, ce qui permet aux entrées de réagir aux informations contextuelles. (I69a8b, b/443282983) - Fais de
NavigationEventswipeEdgeun@IntDef(Icee54, b/443950342) - Ajoutez un paramètre
priorityàNavigationEventDispatcher.addInputpour limiter un répartiteur à une seule priorité. Les événements tels queonHasEnabledCallbacksChangedne se déclenchent désormais que lorsque les rappels de cette priorité changent. (I3e488, b/443711297) - Renommez le paramètre
NavigationEventDispatcherdeparentDispatcheren parent pour plus de clarté. (Id4f1f, b/443801782) - Suppression de
NavigationEventPriorityau profit de@IntDefpour les utilisateurs Java (I10a9f, b/440514265) - Applique le contrat du gestionnaire de navigation. Si votre
NavigationEventHandlerdéfinitisBackEnabledouisForwardEnabledsurtrue, vous devez maintenant remplaceronBackCompletedouonForwardCompleted, respectivement. Les implémentations par défaut génèrent désormais une exception pour éviter les échecs silencieux. (I17c62) - Appliquez des valeurs de priorité valides lorsque vous ajoutez des gestionnaires d'événements de navigation. L'appel de
addHandleravec une priorité non prise en charge génère désormais uneIllegalArgumentException, ce qui permet d'obtenir un retour immédiat en cas d'utilisation incorrecte sur toutes les plates-formes cibles. (I3c474)
Correction de bugs
- Rendez
addHandleridempotent ; ignorez les inscriptions en double. (I052aa, b/444734264) - Maintenez la synchronisation des propriétés
NavigationEventStatelors de la recomposition. (Ib3b4d, b/444734264) - Assurez-vous que
NavigationEventInputsreçoit les informations contextuelles actuelles (actuelles, précédentes, suivantes) immédiatement après l'enregistrement. (Ie65bf, b/443282983)
Version 1.0.0-alpha08
10 septembre 2025
Publication d'androidx.navigationevent:navigationevent-*:1.0.0-alpha08. La version 1.0.0-alpha08 contient ces commits.
Nouvelles fonctionnalités
- Introduisez une API
NavigationEventHandlerbasée sur Lambda qui remplace le gestionnaire basé sur Flow. Gérez les gestes de retour et d'avance avec de simples rappels au lieu de collecter des flux, ce qui réduit le code récurrent et évite les problèmes d'annulation. FournissezNavigationBackHandleretNavigationForwardHandleren tant qu'API pratiques ciblées. SupprimezNavigationEventHandlerbasé sur Flow et migrez vers les nouveaux rappels. (I23bac, b/436248277) - Permet aux auditeurs passifs d'accéder à l'intégralité de la pile de retour de navigation grâce à des informations de retour combinées. Permet aux UI d'afficher des aperçus et l'historique de navigation imbriqué au lieu d'être limitées au rappel le plus haut. (I7a510, b/436248277)
- Introduisez un modèle explicite de retour/actuel/avant pour clarifier l'état de navigation et prendre en charge la navigation vers l'avant avec des gestionnaires imbriqués. (Ib86da, b/420443609)
- Ajoutez les méthodes
onForward*etisForwardEnabledàNavigationEventCallback. (Ic100f, b/436248290) - Ajoutez la prise en charge de la navigation vers l'avant à
NavigationEventInput. (I5734b)
Modifications apportées à l'API
- Activez le test des événements de navigation vers l'avant avec
TestNavigationEventCallback. Utilisez les hooksisForwardEnabledetonForward*. (I21fb5, b/420443609) - Renommez les rappels
onEvent*enonBack*dansNavEvent. (I228b3, b/436248290) - Convertissez
SwipeEdgeen classe inline. (Id5e01) - Rendez la bibliothèque
navigationeventinteropérable avec Java. Toutes les API publiques sont désormais entièrement accessibles à partir du code Java, ce qui permet une intégration fluide dans les projets multilingues ou Java uniquement. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294) - Clarification des rôles d'API en renommant
NavigationEventCallbackenNavigationEventHandler. Cette modification reflète mieux l'objectif de la classe, qui est de gérer les gestes de navigation à plusieurs étapes. La méthodeaddCallbackcorrespondante est désormaisaddHandler. (I2492a, b/443040331)
Correction de bugs
- Empêchez le retour en arrière de s'exécuter lors de la navigation vers l'avant. (I74814, b/436248290)
- Ajoutez la prise en charge de la navigation prédictive vers l'avant. Les API
NavigationEventgèrent désormais les gestes Retour et Avant, ce qui permet d'obtenir des animations cohérentes pour les deux sens de navigation. (Idc98c, b/436248290) - Empêche un plantage
IllegalStateExceptionlors de la recomposition lorsqu'unNavigationEventDispatcherOwnerenfant est supprimé. (Iff50c, b/412629020) - Les écouteurs passifs peuvent désormais accéder à l'intégralité de la pile de navigation arrière grâce aux informations combinées sur l'historique, ce qui permet aux UI d'afficher des aperçus et l'historique de navigation imbriqué au lieu d'être limitées au rappel le plus haut. (I7a510, b/436248277)
Version 1.0.0-alpha07
27 août 2025
Publication d'androidx.navigationevent:navigationevent-*:1.0.0-alpha07. La version 1.0.0-alpha07 contient ces commits.
Modifications apportées à l'API
- Supprimez
NavigationEventDispatcher.onHasEnabledCallbacksChanged. (I50e97) - Rendez
NavigationEventCallback.onEventCompleted()abstrait. (I36b38) - Remplacez les méthodes
NavigationEventCallback#on*parprotected. Mettez à jour le code appelant pour les remplacer. (I6b691) - Renommez les fonctions
DirectNavigationEventInput. (Iffb62) NavigationEventInput.onAttacha été renomméonAdded. (I2d0b8)NavigationEventInput.onDetacha été renomméonRemoved. (I2d0b8)NavigationEventInputHandlera été renomméNavigationEventInput. (I676a4)- Ajout de
@EmptySuperàNavigationEventInput.onHasEnabledCallbacksChanged. (If9853) - Implémentez
onAttachdansNavigationEventInputHandler. (I03648) - Implémentez
onDetachdansNavigationEventInputHandler. (I03648) - La valeur par défaut de
NavigationEventCallbackest "activé" lors de la création. (Ic0188) - Remplacement de
NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackparNavigationEventInput.onHasEnabledCallbacksChanged. (I64e93) - Le thread principal est requis pour
NavigationEventDispatcher.addInput. (Ic2930) - Le thread principal est requis pour
NavigationEventDispatcher.removeInput. (Ic2930) - Supprimez
Dispatcher.addOnHasEnabledCallbacksChangedCallback. Remplacer parDispatcher.onHasEnabledCallbacksChanged. (Ida3e3, b/436530096)
Correction de bugs
- Correction d'un bug qui entraînait un comportement incorrect du cycle de vie lors de l'ajout d'un gestionnaire déjà associé ou de la suppression d'un gestionnaire non associé. (I9e47b)
Version 1.0.0-alpha06
13 août 2025
Publication d'androidx.navigationevent:navigationevent-*:1.0.0-alpha06. La version 1.0.0-alpha06 contient ces commits.
Nouvelles fonctionnalités
API Passive Listeners
Vous pouvez désormais transmettre des informations contextuelles personnalisées depuis n'importe quel hôte de navigation et écouter passivement les changements d'état des gestes depuis n'importe quel endroit de votre UI. Cela permet d'activer des animations contextuelles pour la prévisualisation du geste Retour et d'autres types de navigation par gestes.
Cette fonctionnalité comporte deux volets :
- Fournir des informations : utilisez
NavigationEventInfopour transmettre des données personnalisées. - État de consommation : utilisez
dispatcher.state(NavigationEventState) pour observer la progression et le contexte du geste.
NavigationEventCallbackexpose désormais la méthodesetInfo(currentInfo, previousInfo)pour définir le contexte du geste en un seul appel (I1d5e7, b/424470518).NavigationEventHandlerajoute une nouvelle surcharge qui acceptecurrentInfoetpreviousInfo, ce qui en fait l'API principale pour fournir le contexte dans les applications Compose (I6ecd3, b/424470518).
Exemple :
data class MyScreenInfo(val screenName: String) : NavigationEventInfo
NavigationEventHandler(
enabled = true,
currentInfo = MyScreenInfo("Details Screen"),
previousInfo = MyScreenInfo("Home Screen")
) { /* Handle back completion */ }
NavigationEventDispatcherexpose désormaisdispatcher.stateetdispatcher.getState<T>()(If7fae, Ia90ca, b/424470518). Ces API basées surStateFlowpermettent à n'importe quelle UI d'observer la progression des gestes et les données contextuelles sans gérer directement l'événement.
Exemple :
val gestureState by LocalNavigationEventDispatcherOwner.current!!
.navigationEventDispatcher
.state
.collectAsState()
val progress = gestureState.progress // Returns latestEvent.progress or 0F
when (val state = gestureState) {
is InProgress -> {
val toScreen = state.currentInfo as MyScreenInfo
val fromScreen = state.previousInfo as MyScreenInfo
println("Navigating from ${fromScreen.screenName} to ${toScreen.screenName}")
}
is Idle -> { /* Idle state */ }
}
Ajoutez la propriété
progressàNavigationEventState(I7b196) qui renvoielatestEvent.progressen cas de progression ou0Fdans le cas contraire :val progress = state.progressAjout du composable
NavigationEventDispatcherOwnerpour créer, associer et supprimer des instancesNavigationEventDispatcherde manière hiérarchique. Activez le contrôle dynamique de l'état activé du répartiteur et le nettoyage automatique.@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
Modifications apportées à l'API
- Le paramètre
isPassthrougha été supprimé deNavigationEventCallback. (I99028, b/424470518) - Les constructeurs
NavigationEventStatesont désormais internes. Pour les tests, mettez à jour l'état (par défaut,Idle) viaDirectNavigationEventInputHandler. AppelezhandleOnStartedouhandleOnProgressedpour définir l'état surInProgress, ethandleOnCompletedouhandleOnCancelledpour le rétablir surIdle. Pour mettre à jourNavigationEventInfo, utilisezNavigationEventCallback.setInfo. (I93dca, b/424470518) - Ajout de paramètres par défaut à
NavigationEventpour faciliter l'instanciation et simplifier les tests, qui doivent être utilisés à la place deTestNavigationEvent. (I5dc49, I232f4) - Ajout d'un
TestNavigationEventCallbackpour tester les événements de navigation avec des états actuels/précédents spécifiques. (Idd22e, b/424470518) NavigationEventInputHandlerest désormais une classe abstraite qui remplace l'ancienneAbstractNavigationEventInputHandlerpar une implémentation dansDirectNavigationEventInputHandler(Iadde5, Ifed40I3897c, b/432616296, b/435416924).- Le préfixe des fonctions
send*dansNavigationEventInputHandlera été remplacé parhandle*. (Iffcaf) OnBackInvokedInputHandlerétend désormais le nouveauNavigationInputHandlerabstract. (Ib45aa)- Modification de
NavigationEventDispatcherOwnerpour exiger un répartiteur parent où vous devez transmettre explicitementnullpour créer un répartiteur racine. (Ia6f64, b/431534103)
Correction de bugs
- Efficacité améliorée en évitant les copies de collections dans
NavigationEventDispatcher.dispose(). (I4ab09) - Correction d'un problème où
NavigationEventHandlerne répondait pas correctement aux modifications de son état activé. (Ia5268,I19bec, I5be5c, b/431534103)
Nouveautés de Docs
- La documentation KDocs pour
NavigationEventa été étendue pour clarifier son rôle d'encapsuleur d'événements unifié et détailler le comportement des propriétés pour différents types de navigation (gestes, clics). (I91e8d) - Mise à jour de la documentation pour les API Compose de gestion du retour système (
BackHandler,PredictiveBackHandler,NavigationEventHandler) afin de préciser le comportement, en particulier en ce qui concerne l'ordre des rappels. (I7ab94, )
Mise à jour de la dépendance
NavigationEventdépend désormais de Compose Runtime 1.9.0-beta03, ce qui permet à l'artefactnavigationevent-composede prendre en charge toutes les cibles KMP. (Ia1b87)
Version 1.0.0-alpha05
30 juillet 2025
Publication d'androidx.navigationevent:navigationevent-*:1.0.0-alpha05. La version 1.0.0-alpha05 contient ces commits.
Prise en charge de la hiérarchie parent-enfant :
Un NavigationEventDispatcher peut désormais avoir des dispatchers parents et enfants, formant une structure arborescente hiérarchique. Cela permet aux événements de navigation de se propager et d'être gérés de manière plus flexible dans les composants d'interface utilisateur Compose complexes en reflétant la hiérarchie structurelle de l'UI via des dispatchers chaînés. (I194ac)
// Create a parent dispatcher that will manage navigation events at a higher level.
val parentDispatcher = NavigationEventDispatcher()
// Create a child dispatcher linked to the parent, forming a hierarchy.
val childDispatcher = NavigationEventDispatcher(parentDispatcher)
La propriété hiérarchique isEnabled permet un contrôle descendant d'un répartiteur. Lorsque isEnabled est défini sur false sur un répartiteur, tous ses répartiteurs descendants sont automatiquement désactivés. Cette fonctionnalité permet de désactiver efficacement des branches entières du système d'événements de navigation. (I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
De plus, la propriété isEnabled sur NavigationEventCallback respecte désormais l'état activé de son répartiteur associé. Cela signifie qu'un rappel n'est considéré comme activé que si le rappel lui-même et son répartiteur (y compris ses ancêtres) sont activés. Cela garantit un contrôle hiérarchique cohérent sur l'activation des rappels. (I1799a)
// Create a test callback and add it to the child dispatcher.
val callback1 = TestNavigationEventCallback(isEnabled = true)
childDispatcher.addCallback(callback1)
// Since the childDispatcher is disabled, the callback is effectively disabled as well.
assertThat(callback1.isEnabled).isFalse()
Une nouvelle méthode dispose() a été introduite pour nettoyer correctement les dispatchers et leurs enfants. L'appel de dispose() arrête les écouteurs pour éviter les fuites de mémoire, supprime de manière récursive tous les dispatchers enfants, supprime tous les rappels enregistrés auprès du dispatcher et le dissocie de son parent. Cela garantit que les ressources sont libérées correctement lorsque les dispatchers ne sont plus nécessaires. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
Si une méthode publique est appelée sur un répartiteur supprimé, une IllegalStateException est immédiatement générée. Cela évite les échecs silencieux et aide les développeurs à identifier les utilisations inappropriées pendant le développement. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
Remarque : Nous allons introduire un nouveau composable NavigationEventDispatcherOwner qui gère automatiquement un répartiteur enfant dans l'UI Compose dans aosp/3692572. Toutefois, ce changement n'a pas été inclus dans la version actuelle et est prévu pour la prochaine.
Bibliothèque de test de navigation
- Ajoutez le module
navigationevent-testingpour fournir des utilitaires de test dédiés à la bibliothèquenavigationevent. (0e50b6) - Ajout de la classe utilitaire fictive
TestNavigationEventCallbackpour les tests. Il enregistre les appels de méthode de rappel et stocke les élémentsNavigationEventreçus pour faciliter la validation. (4a0246) - Ajout d'une fonction utilitaire factice
TestNavigationEventpour créer des instancesNavigationEventavec des valeurs par défaut, ce qui simplifie les tests unitaires pour le traitement des événements de navigation. (3b63f5) - Ajout de la classe utilitaire fictive
TestNavigationEventDispatcherOwnerpour les tests. Il suit le nombre d'événements de changement d'état (activé/désactivé) et de secours pour permettre la vérification des interactions dans les tests. (c8753e)
Modifications apportées à l'API
- Déplacez
NavigationEventInputHandlerdeandroidMainverscommonMainpour le rendre disponible dans le code commun KMP. Ajout de nouvelles méthodespublic send*pour distribuer les événements. Modifiez les fonctions de répartition surNavigationEventDispatcherdepublicàinternal. Les utilisateurs doivent désormais utiliserNavigationEventInputHandlerpour envoyer des événements. (Ia7114) NavigationInputHandlera été renomméOnBackInvokedInputHandler. (I63405)
Correction de bugs
- Refactorisez
NavigationEventDispatcherpour réduire la surcharge en évitant les allocations de listes intermédiaires et en améliorant les performances de répartition des rappels. (I82702, I1a9d9) - Ajout d'annotations
@FloatRangeaux champstouchX,touchYetprogressdansNavigationEventpour appliquer des plages de valeurs valides au moment de la compilation et améliorer la sécurité de l'API. (Iac0ec)
Version 1.0.0-alpha04
2 juillet 2025
Publication d'androidx.navigationevent:navigationevent-*:1.0.0-alpha04. La version 1.0.0-alpha04 contient ces commits.
Correction de bugs
- Utilisation de
implementedInJetBrainsForkpournavigationevent-composeet ajout d'une ciblecommonStubspour correspondre aux conventions Compose. Modification demandée par JetBrains. (f60c79) - Correction de l'application du plug-in de compilation Compose pour Kotlin/Native afin de garantir la génération correcte des stubs. Aucun impact sur les API publiques ni sur le comportement. (1890c9)
Version 1.0.0-alpha03
18 juin 2025
Publication d'androidx.navigationevent:navigationevent-*:1.0.0-alpha03. La version 1.0.0-alpha03 contient ces commits.
Nouvelles fonctionnalités
- Ajout d'un nouveau module
navigationevent-composepour prendre en charge les fonctionnalités Jetpack Compose dans la bibliothèquenavigationevent. (980d78) NavigationEventCompose a ajouté une nouvelle composition localeLocalNavigationEventDispatcherOwner. Elle renvoie une possibilité de valeur nulle pour mieux déterminer si elle est disponible dans la composition actuelle.NavigationEventHandlergénère désormais une erreur si le propriétaire sous-jacent est introuvable. (62ffda)NavigationEventCompose a ajouté un nouveau composableNavigationEventHandlerpour gérer les événements (prévisualisation du geste Retour). Il fournit unFlowd'objetsNavigationEventqui doivent être collectés dans le lambda de suspension que vous fournissez c42ba6 : :
NavigationEventHandler { progress: Flow<NavigationEvent> ->
// This block is executed when the back gesture begins.
try {
progress.collect { backEvent ->
// Handle gesture progress updates here.
}
// This block is executed if the gesture completes successfully.
} catch (e: CancellationException) {
// This block is executed if the gesture is cancelled
throw e
} finally {
// This block is executed either the gesture is completed or cancelled
}
}
Modifications apportées à l'API
- Chaque
NavigationEventCallbackne peut désormais être enregistré qu'auprès d'un seulNavigationEventDispatcherà la fois. Si vous l'ajoutez à plusieurs dispatchers, une erreurIllegalStateExceptionse produit. Notez que ce comportement diffère deOnBackPressedDispatcher, qui autorise plusieurs coordinateurs. (e82c19) isPassThroughest désormais unvalpour éviter toute mutation pendant la navigation, ce qui pourrait interrompre l'envoi deNavigationEvent. (I0b287)
Version 1.0.0-alpha02
4 juin 2025
Publication d'androidx.navigationevent:navigationevent-*:1.0.0-alpha02. La version 1.0.0-alpha02 contient ces commits.
Modifications apportées à l'API
- Remplacez le constructeur secondaire de
NavigationEventDispatcherpar des arguments par défaut. (I716a0) - Supprimez la propriété de priorité de
NavigationEventCallback. Transmettez plutôt la priorité àNavigationEventDispatcher.addCallback(). (I13cae)
Correction de bugs
- Correction d'une
ConcurrentModificationExceptionqui pouvait se produire lors de l'appel deNavigationEventCallback.remove()en raison de la modification simultanée de la liste interne des éléments fermables. (b/420919815)
Version 1.0.0-alpha01
20 mai 2025
Publication d'androidx.navigationevent:navigationevent-*:1.0.0-alpha01. La version 1.0.0-alpha01 contient ces commits.
Nouvelles fonctionnalités
- La bibliothèque
androidx.navigationeventfournit une API KMP-first pour gérer le retour système ainsi que la prévisualisation du Retour.NavigationEventDispatchersert d'API commune pour enregistrer une ou plusieurs instancesNavigationEventCallbackafin de recevoir les événements de retour système. - Cette couche se situe en dessous des API publiées précédemment dans
androidx.activityet vise à remplacer de manière moins arbitraire l'utilisation des API Activity dans les composants de niveau supérieur ou l'utilisation directe des APIOnBackInvokedDispatcherdu framework Android. Les APIandroidx.activityont été réécrites au-dessus des API Navigation Event dans le cadre d'Activity 1.12.0-alpha01.