navigation3
Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
---|---|---|---|---|
8 octobre 2025 | - | - | - | 1.0.0-alpha11 |
Déclarer des dépendances
Pour ajouter une dépendance à navigation3, 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.navigation3:navigation3-runtime:1.0.0-alpha11" implementation "androidx.navigation3:navigation3-ui:1.0.0-alpha11" }
Kotlin
dependencies { implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha11") implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha11") }
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-alpha11
8 octobre 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha11
. La version 1.0.0-alpha11 contient ces commits.
Modifications apportées à l'API
- La méthode
calculateScene
surSceneStrategy
n'est plus@Composable
. Au lieu de cela, envisagez de déplacer ce travail vers la construction de votre méthodeSceneStrategy
(c'est-à-dire dans une méthoderememberMySceneStrategy()
) qui vous permet de définir entièrement la durée de vie de toutes les valeursrememberSaveable
ou des instructions clésremember
à partir des valeurs correctes. (If1733, b/448709506) - Le paramètre
onBack
pourSceneStrategy.calculateScene
a été déplacé dans le nouveau champ de récepteurSceneStrategyScope
afin d'indiquer plus clairement qu'il s'agit d'un paramètre facultatif et de fournir un point d'extension pour les futures fonctionnalités Navigation3. (I3aea3, b/448460407) - Le lambda
onBack
transmis àNavDisplay
et à votreSceneStrategy
ne fournit plus de paramètrecount: Int
pour indiquer quand plusieurs entrées doivent être supprimées. Au lieu de cela, le lambda() -> Unit
sera désormais appelé plusieurs fois de suite dans le rare cas où votre scène demande l'affichage de plusieurs entrées. (Idedb5, b/446989346) - Supprimez la classe
NavEntryWrapper
et remplacez sa fonctionnalité par une classeNavEntry
finale avec un nouveau constructeur secondaire qui accepte unNavEntry
avec un nouveau contenu. Cela permettra de continuer à prendre en charge l'encapsulation d'une entrée avec du nouveau contenu. (I7da2a, b/444447130) - La fonction
navEntryDecorator
, qui crée et renvoie unNavEntryDecorator
, a été supprimée et remplacée par la classeNavEntryDecorator
, qui est désormais publique et ouverte à la sous-classe. (If81f8, b/444447434, b/447381176) SavedStateNavEntryDecorator
a été renomméSaveableStateHolderNavEntryDecorator
, car il décore les entrées avec unSaveableStateHolder
. Le décorateur a également été refactorisé d'une fonction à une classe, car il s'agit fonctionnellement d'une fabrique pourNavEntryDecorator
. (Ie6013, b/447381176)- Les affichages personnalisés utilisant
SceneState
comme alternative àNavDisplay
ne sont plus tenus d'utiliser le local de compositionLocalEntriesToRenderInCurrentScene
, qui est désormais interne. (Ic40ef, b/414668196) - Suppression de
SceneSetupNavEntryDecorator
etrememberSceneSetupNavEntryDecorator()
de la surface de l'API publique. Cette fonctionnalité est désormais incluse par défaut, sans que vous ayez besoin de l'inclure manuellement. (Ieae42, b/444479133) NavEntry
,DialogScene
,SinglePaneScene
etSceneState
implémentent désormais "equals". (I96121)- L'interface de scène comporte un nouveau champ de métadonnées permettant d'associer des métadonnées spécifiques à la scène pour NavDisplay. Cela permet à une scène de remplacer les métadonnées sur le
NavDisplay
, par exemple avec des transitions. (I1fd96, b/443955625) - Simplifiez la signature
rememberNavBackStack
en supprimant le paramètre de type générique redondant. La fonction accepte désormaisvararg elements: NavKey
. (I03e45) - Les animations par défaut pour
NavDisplay
font désormais partie de l'API commune, ce qui permet de les appeler depuis toutes les plates-formes. (I71af9, b/447147159) - Renommez
EntryProviderBuilder
enEntryProviderScope
pour refléter précisément que la classe est un DSL Kotlin fournissant un champ d'application pour créerNavEntries
. (Ia7465)
Correction de bugs
rememberNavBackStack()
applique désormais la sérialisation polymorphe pour NavKey et nécessite unSavedStateConfiguration
personnalisé configuré pour assurer la restauration correcte de l'état. La documentation KDoc a été mise à jour pour refléter l'exigence selon laquelle tous les sous-types NavKey doivent être enregistrés dans le module SerializersModule fourni. (I6de37,I782f2, b/446664383)
Version 1.0.0-alpha10
24 septembre 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha10
. La version 1.0.0-alpha10 contient ces commits.
Modifications apportées à l'API
- Ajoutez une nouvelle surcharge
NavDisplay
qui accepte une liste deNavEntry<T>
décorée parrememberDecoratedNavEntries
. (I4025b, b/441940314) - Déplacement de
DialogScene
vers un nouveau package. (Ia5840) - Suppression de l'API publique
DecorateNavEntry
. Utilisez plutôtrememberDecoratedNavEntries
pour encapsuler une NavEntry avec une liste de décorateurs. (Id8c09) - L'UI Navigation3 fournit désormais de nouvelles propriétés
transitionSpec
par défaut. (Ibcabd) - Ajout d'un nouvel objet
SceneState
pour faciliter la gestion des scènes. Cela fournit également une nouvelle surchargeNavDisplay
qui accepteSceneState
etNavigationEventState
. (Idfb46, b/444479133) NavDisplay
vous permet désormais de personnaliser les transitions en fonction de la destination et de la source deScene
en examinant lescurrentState
ettargetState
deTransition
. (I906cc, b/443872322)NavigationEventInfo
est désormais unabstract class
au 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)- Les API du gestionnaire
navigationevent-compose
sont mises à jour.NavigationEventHandler
etNavigationBackHandler
(et leurs variantes) sont désormais compatibles avec une nouvelle surcharge qui accepte lesNavigationEventState
hissés. Les surcharges simples (prenantcurrentInfo
) sont conservées et utilisent désormais ce nouveau modèle d'état en interne. (Ic3251, b/444734264) - Toutes les API Scene ont été déplacées de navigation3-ui vers navigation3-runtime. Cela signifie qu'elles sont désormais disponibles sur toutes les plates-formes compatibles avec navigation3-runtime. (I431d0, b/444449993)
- Ajout d'une nouvelle surcharge
rememberDecoratedNavEntries
qui accepte une liste deNavEntry
à décorer. Les entrées d'entrée peuvent déjà être décorées avec d'autres décorateurs d'entrée. (I5a034, b/444230270) - Supprimer les paramètres de type générique navigation3 (I02540)
- Amélioration de la gestion des génériques pour le DSL
entryProvider
. Si vous importiezandroidx.navigation3.runtime.entry
auparavant, vous n'avez plus à le faire. (I299fc) - Limitez la surcharge
NavBackStackSerializer
basée sur la réflexion à Android. Cela empêche les échecs de sérialisation d'exécution implicites sur les plates-formes non Android en imposant l'utilisation de la surchargeSavedStateConfiguration
explicite dans le code multiplate-forme. (I73313, b/420443609) - Fais de
NavigationEvent
swipeEdge
un@IntDef
(Icee54, b/443950342) - Limitez la sérialisation
NavBackStack
à Android. Cela évite les échecs d'exécution sur les plates-formes non Android. Pour enregistrer l'état multiplate-forme, utilisez la surchargerememberNavBackStack
avec unSavedStateConfiguration
explicite. (I1e418, b/420443609)
Correction de bugs
- Correction d'un plantage lors de la prévisualisation du retour en arrière lorsqu'un
NavDisplay
imbriqué ne comporte qu'une seule entrée enfant. (I2cdc0, b/441933162)
Version 1.0.0-alpha09
10 septembre 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha09
. La version 1.0.0-alpha09 contient ces commits.
Modifications apportées à l'API
DecoratedNavEntryProvider
a été remplacé parrememberDecoratedNavEntries
, qui crée et renvoie des NavEntries décorés avec la liste des décorateurs fournis (I0fe1c, b/441328236).NavBackStack
est désormais générique sur le typeNavKey
. Cela permet aux applications et aux bibliothèques de définir des types de clés personnalisés pour leurs piles de retour, au lieu d'être limitées àNavKey
. (I4d190,Iad2f4, b/420443609)NavBackStack
est désormais@kotlinx.serialization.Serializable
, ce qui permet d'enregistrer et de restaurer l'état de navigation en cas de fin du processus et de modification de la configuration sans code passe-partout supplémentaire. (I2c3cf, b/420443609)RememberNavBackStack
a été déplacé verscommonMain
pour s'assurer qu'il est fourni sur toutes les cibles de plate-forme. (Id69e7, b/420443609)
Correction de bugs
NavDisplay
déplace désormais correctement chaqueNavEntry
individuel vers leLifecycle.State
approprié. (I30aac, b/440145700)- Correction d'un problème qui empêchait
NavDisplay
d'ignorer lesNavigationEventDispatcherOwner
imbriqués définis viaLocalNavigationEventDispatcherOwner
de la bibliothèqueNavigationEvent
. (I6224a)
Modifications de la dépendance
- Navigation3 dépend désormais de NavigationEvent Alpha08.
Version 1.0.0-alpha08
27 août 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha08
. La version 1.0.0-alpha08 contient ces commits.
Nouvelles fonctionnalités
- Ajout de nouvelles cibles Kotlin Multiplatform (KMP) aux artefacts
Navigation3 Runtime
.Navigation3 Runtime
est désormais compatible avec les plates-formes suivantes : JVM (Android et Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) et Web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). Remarque : Cela ne fournit pas de cibles KMP pour l'artefactNavigation3 UI
. Sur d'autres plates-formes, vous devrez implémenter votre propreNavDisplay
personnalisé. Si vous souhaitez que cette fonctionnalité soit prise en charge, veuillez voter pour le problème Jetbrains ici et suivre sa progression pour obtenir de l'aide supplémentaire. - L'objet
NavDisplayInfo
est désormais public et peut être utilisé pour récupérer la liste des entrées visibles à partir deNavDisplay
. (Ibc91f)
Modifications apportées à l'API
- Ajout d'un nouveau
NavBackStackSerializer
à utiliser conjointement avecrememberNavBackStack
pour effectuer la restauration de l'état.rememberNavBackStack()
accepte désormais également unSavedStateConfiguration
qui peut être utilisé pour fournir votre propre configuration. (I2f4d2, I4cd58, b/420443609)
Correction de bugs
- Correction d'un problème qui entraînait le déclenchement d'événements de cycle de vie incorrects lors de la navigation. (I8bf6d, b/425901162, b/434109022)
Problèmes connus
- Un bug introduit par I8bf6d a fait que les cycles de vie étaient basés sur des scènes au lieu d'entrées individuelles, ce qui a cassé le cycle de vie pour tous les cas où le
key
fourni auNavEntry
n'est pas unString
ou votreNavEntry
n'a pas remplacé lecontentKey
et ne l'a pas défini comme égal aukey
(notez que cela impose que votre clé puisse être enregistrée dans unBundle
). Ce problème a été résolu pour la prochaine version. (b/440145700)
Version 1.0.0-alpha07
13 août 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha07
. La version 1.0.0-alpha07 contient ces commits.
Mise à jour de MinSdk
- La valeur minSdk par défaut pour AndroidX est passée de l'API 21 à l'API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
Modifications apportées à l'API
SavedStateNavEntryDecorator
utilise désormaisSaveableStateRegistry
intégré àSaveableStateProvider
pour enregistrer et restaurer les états. (If8d9a)- Le
predictivePopTransitionSpec
fournit désormais le bord de balayage en tant que paramètre, ce qui vous permet de personnaliser la transition en fonction du bord à partir duquel l'utilisateur a commencé le geste de prévisualisation du Retour. (I753a8)
Correction de bugs
- Correction d'un problème qui entraînait le recalcul infini des scènes personnalisées, car la scène la plus récente n'était pas mémorisée. (I7ba84, b/418153031)
Mise à jour de la dépendance
- Navigation3 dépend désormais de Navigation Event
1.0.0-alpha06
.
Version 1.0.0-alpha06
30 juillet 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha06
. La version 1.0.0-alpha06 contient ces commits.
Mise à jour de la dépendance
- Navigation3 dépend désormais de Navigation Event
1.0.0-alpha05
.
Version 1.0.0-alpha05
2 juillet 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha05
. La version 1.0.0-alpha05 contient ces commits.
Nouveaux comportements
- L'état de
NavEntry
est désormais strictement basé sur la liste actuelle des décorateurs transmis àNavDisplay
. Cela signifie que les décorateurs doivent être échangés le long de vos piles "Retour" en cas de piles "Retour" multiples afin de préserver l'état des NavEntries sur la pile "Retour". Sinon, les états seront effacés comme si les entrées avaient été supprimées (au lieu d'être inversées). (I7a759, b/428033667)
Version 1.0.0-alpha04
18 juin 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha04
. La version 1.0.0-alpha04 contient ces commits.
Modifications apportées à l'API
NavEntry.content
est désormais privé. Pour appeler le contenuNavEntry
, appelez la nouvelle APINavEntry.Content()
, qui ne nécessite plus de paramètrekey
pour l'appel. (Icd0fd, b/420991203)NavEntry.key
est désormais un champ privé.NavEntry
et ses états associés doivent être identifiés par le nouveau champcontentKey
, qui est généré à partir du nouveau lambdacontentKeyFactory
et qui est défini par défaut sur un hachage enregistrable généré à partir deNavEntry.key
. (I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812)
Modifications de la dépendance
- Navigation3 dépend désormais du nouvel artefact
androidx.navigationevent.compose
.
Version 1.0.0-alpha03
4 juin 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha03
. La version 1.0.0-alpha03 contient ces commits.
Correction de bugs
Navigation3
n'effacera plus les états de décorateur pour lesbackStacks
qui ont été remplacés par une autre instancebackStack
. (I28a42, b/415076044)
Version 1.0.0-alpha02
23 mai 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha02
. La version 1.0.0-alpha02 contient ces commits.
Correction de bugs
- Correction d'un problème lié à
SavedStateNavEntryDecorator
qui entraînait des collisions pour différentes classes de données avec les mêmes valeurs de propriété. (b/418070648, Iff4775) - Correction d'un problème de classe manquante qui entraînait des plantages lors de l'exécution sans déclaration de dépendances explicites. (b/419049149, I4b4ed)
Version 1.0.0-alpha01
20 mai 2025
Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha01
. La version 1.0.0-alpha01 contient ces commits.
Nouvelles fonctionnalités
Navigation3 est une nouvelle bibliothèque de navigation conçue spécifiquement pour gérer la navigation dans les applications Jetpack Compose. L'artefact androidx.navigation3.runtime
fournit les blocs de construction, tandis que l'artefact androidx.navigation3.ui
fournit la couche UI via l'API NavDisplay
. Les développeurs peuvent fournir leur propre état directement à la fonction composable NavDisplay
, qui modifie le contenu en fonction des changements d'état du développeur.
@Serialiable object Home : NavKey
@Serialiable object Chat : NavKey
val backStack = rememberNavBackStack(Home)
NavDisplay(backStack, entryProvider = entryProvider {
entry<Home> {
Column {
Text(“Home”)
Button(onClick = { backStack.add(Chat) } ) {
Text(“Go to Chat”)
}
}
}
entry<Chat> { /* My Composable Content */ }
})
Pour en savoir plus, consultez le guide Navigation3.