navigation3
| Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
|---|---|---|---|---|
| 22 de octubre de 2025 | - | - | 1.0.0-beta01 | - |
Cómo declarar dependencias
Para agregar una dependencia en navigation3, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio de Maven de Google para obtener más información.
Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:
Groovy
dependencies { implementation "androidx.navigation3:navigation3-runtime:1.0.0-beta01" implementation "androidx.navigation3:navigation3-ui:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.navigation3:navigation3-runtime:1.0.0-beta01") implementation("androidx.navigation3:navigation3-ui:1.0.0-beta01") }
Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.
Comentarios
Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.
Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.
No hay notas de la versión para este artefacto.
Versión 1.0
Versión 1.0.0-beta01
22 de octubre de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-beta01. La versión 1.0.0-beta01 contiene estas confirmaciones.
Cambios en la API
SceneStrategyScopeahora solo tiene un constructor público sin argumentos, adecuado para probar tuSceneStrategyy elScenedevuelto de forma aislada. Para casos de uso más complejos, usarememberSceneState(). (I8440c, b/451679047)
Correcciones de errores
- Se corrigió el bucle infinito que se producía al encadenar
SceneStrategyconthen. (Iba3f0, b/450323470) - Se corrigió el parpadeo de la pantalla que se producía al intercambiar el
backStackque se pasaba aNavDisplayy usar animaciones. (Ief7b5, b/450967248)
Versión 1.0.0-alpha11
8 de octubre de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha11. La versión 1.0.0-alpha11 contiene estas confirmaciones.
Cambios en la API
- El método
calculateSceneenSceneStrategyya no es@Composable. En cambio, considera trasladar este trabajo a la construcción de tu métodoSceneStrategy(es decir, en un métodorememberMySceneStrategy()) que te permita definir por completo la vida útil de cualquier valor derememberSaveableo de las instrucciones clave deremembera partir de los valores correctos. (If1733, b/448709506) - El parámetro
onBackparaSceneStrategy.calculateScenese movió al nuevo alcance del receptor deSceneStrategyScopepara dejar más claro que este es un parámetro opcional y proporcionar un punto de extensión para futuras funciones de Navigation3. (I3aea3, b/448460407) - La expresión lambda
onBackque se pasa aNavDisplayy a tuSceneStrategyya no proporciona un parámetrocount: Intpara indicar cuándo se deben quitar varias entradas. En cambio, la lambda() -> Unitahora se llamará varias veces seguidas en el caso poco frecuente en el que tu escena solicite que aparezcan varias entradas. (Idedb5, b/446989346) - Quita la clase
NavEntryWrappery reemplaza su funcionalidad por una claseNavEntryfinal con un nuevo constructor secundario que tome unNavEntrycon contenido nuevo. Esto permitirá seguir admitiendo el ajuste de una entrada con contenido nuevo. (I7da2a, b/444447130) - Se quitó la función
navEntryDecorator, que crea y devuelve unNavEntryDecorator, y se reemplazó por la claseNavEntryDecorator, que ahora es pública y está abierta para la creación de subclases. (If81f8, b/444447434, b/447381176) - Se cambió el nombre de
SavedStateNavEntryDecoratorporSaveableStateHolderNavEntryDecorator, ya que decora las entradas con unSaveableStateHolder. El decorador también se refactorizó de una función a una clase, ya que, funcionalmente, es una fábrica paraNavEntryDecorator. (Ie6013, b/447381176) - Las pantallas personalizadas que usan
SceneStatecomo alternativa aNavDisplayya no requieren usar el elementoLocalEntriesToRenderInCurrentScenede composición local, que ahora es interno. (Ic40ef, b/414668196) - Se quitaron
SceneSetupNavEntryDecoratoryrememberSceneSetupNavEntryDecorator()de la superficie de la API pública. Esta funcionalidad ahora se incluye de forma predeterminada sin necesidad de que la incluyas manualmente. (Ieae42, b/444479133) NavEntry,DialogScene,SinglePaneSceneySceneStateahora implementan equals. (I96121)- La interfaz de Scene tiene un nuevo campo de metadatos para adjuntar metadatos específicos de la escena para NavDisplay. Esto permite que una escena anule los metadatos en el objeto
NavDisplay, por ejemplo, con transiciones. (I1fd96, b/443955625) - Se simplificó la firma de
rememberNavBackStackquitando el parámetro de tipo genérico redundante. La función ahora aceptavararg elements: NavKey. (I03e45) - Las animaciones predeterminadas para
NavDisplayahora forman parte de la API común, lo que permite llamarlas desde todas las plataformas. (I71af9, b/447147159) - Se cambió el nombre de
EntryProviderBuilderaEntryProviderScopepara reflejar con precisión que la clase es un DSL de Kotlin que proporciona un alcance para compilarNavEntries. (Ia7465)
Correcciones de errores
rememberNavBackStack()ahora aplica la serialización polimórfica para NavKey y requiere unSavedStateConfigurationpersonalizado que esté configurado para garantizar la restauración correcta del estado. Se actualizó KDoc para reflejar el requisito de que todos los subtipos de NavKey deben registrarse en el SerializersModule proporcionado. (I6de37,I782f2, b/446664383)
Versión 1.0.0-alpha10
24 de septiembre de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha10. La versión 1.0.0-alpha10 contiene estas confirmaciones.
Cambios en la API
- Agrega una nueva sobrecarga de
NavDisplayque tome una lista deNavEntry<T>decorada porrememberDecoratedNavEntries. (I4025b, b/441940314) - Se movió
DialogScenea un paquete nuevo. (Ia5840) - Se quitó la API pública
DecorateNavEntry. En su lugar, usarememberDecoratedNavEntriespara unir un NavEntry con una lista de decoradores. (Id8c09) - La IU de Navigation3 ahora proporciona nuevas propiedades
transitionSpecpredeterminadas. (Ibcabd) - Se agregó un nuevo objeto
SceneStatepara ayudar a administrar escenas. Esto también proporciona una nueva sobrecarga deNavDisplayque toma elSceneStatey elNavigationEventState. (Idfb46, b/444479133) NavDisplayahora te permite personalizar las transiciones en función de los elementosScenea los que vas y desde los que vienes, ya que observa losTransition,currentStateytargetState. (I906cc, b/443872322)NavigationEventInfoahora es unabstract classen lugar de uninterface. Actualiza todas las implementaciones personalizadas para que hereden de la clase (p. ej.,data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)- Se actualizaron las APIs del controlador
navigationevent-compose.NavigationEventHandleryNavigationBackHandler(y sus variantes) ahora admiten una nueva sobrecarga que aceptaNavigationEventStates elevadas. Las sobrecargas simples (que tomancurrentInfo) se conservan y ahora usan este nuevo modelo de estado de forma interna. (Ic3251, b/444734264) - Todas las APIs de Scene se movieron de navigation3-ui a navigation3-runtime. Esto significa que ahora están disponibles en todas las plataformas compatibles con navigation3-runtime. (I431d0, b/444449993)
- Se agregó una nueva sobrecarga de
rememberDecoratedNavEntriesque toma una lista deNavEntrypara decorar. Las entradas de entrada ya pueden estar decoradas con otros decoradores de entrada. (I5a034, b/444230270) - Se quitaron los parámetros de tipo comodín de navigation3 (I02540).
- Se mejoró el manejo de elementos genéricos para el DSL de
entryProvider. Si antes importabasandroidx.navigation3.runtime.entry, ya no es necesario que lo hagas. (I299fc) - Restringe la sobrecarga de
NavBackStackSerializerbasada en la reflexión a Android. Esto evita fallas implícitas de serialización en tiempo de ejecución en plataformas que no son de Android, ya que se exige el uso de la sobrecargaSavedStateConfigurationexplícita en el código multiplataforma. (I73313, b/420443609) - Haz que el
swipeEdgedeNavigationEventsea un@IntDef(Icee54, b/443950342) - Se restringió la serialización de
NavBackStacka Android. Esto evita fallas en el tiempo de ejecución en plataformas que no son de Android. Para guardar el estado en varias plataformas, usa la sobrecargarememberNavBackStackcon unSavedStateConfigurationexplícito. (I1e418, b/420443609)
Correcciones de errores
- Se corrigió una falla durante el gesto de atrás predictivo cuando el elemento
NavDisplayanidado tiene una sola entrada secundaria. (I2cdc0, b/441933162)
Versión 1.0.0-alpha09
10 de septiembre de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.
Cambios en la API
- Se reemplazó
DecoratedNavEntryProviderporrememberDecoratedNavEntries, que crea y devuelve NavEntries decorados con la lista de decoradores proporcionados (I0fe1c, b/441328236). NavBackStackahora es genérico para el tipoNavKey. Esto permite que las apps y las bibliotecas definan tipos de claves personalizadas para sus pilas de historial, en lugar de estar restringidas aNavKey. (I4d190,Iad2f4, b/420443609)NavBackStackahora es@kotlinx.serialization.Serializable, lo que permite guardar y restablecer el estado de navegación en caso de cierre del proceso y cambios de configuración sin código adicional. (I2c3cf, b/420443609)RememberNavBackStackse movió acommonMainpara garantizar que se proporcione en todos los destinos de la plataforma. (Id69e7, b/420443609)
Correcciones de errores
NavDisplayahora mueve correctamente cadaNavEntryindividual alLifecycle.Statecorrecto. (I30aac, b/440145700)- Se corrigió un problema por el que
NavDisplayignoraba cualquierNavigationEventDispatcherOwneranidado establecido a través deLocalNavigationEventDispatcherOwnerde la bibliotecaNavigationEvent. (I6224a)
Cambios de dependencia
- Navigation3 ahora depende de NavigationEvent Alpha08.
Versión 1.0.0-alpha08
27 de agosto de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.
Nuevas funciones
- Se agregaron nuevos destinos de Kotlin Multiplatform (KMP) a los artefactos de
Navigation3 Runtime. Ahora,Navigation3 Runtimeadmite las siguientes plataformas en total: JVM (Android y computadoras), nativa (Linux, iOS, watchOS, macOS, MinGW) y web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). Nota: Esto no proporciona destinos de KMP para el artefactoNavigation3 UI. En otras plataformas, deberás implementar tu propioNavDisplaypersonalizado. Si quieres que se admita, vota en el problema de Jetbrains aquí y haz un seguimiento del progreso para obtener asistencia adicional allí. - El objeto
NavDisplayInfoahora es público y se puede usar para recuperar la lista de entradas visibles deNavDisplay. (Ibc91f)
Cambios en la API
- Se agregó un nuevo
NavBackStackSerializerpara usarlo junto conrememberNavBackStackpara realizar la restauración del estado.rememberNavBackStack()ahora también toma unSavedStateConfigurationque se puede usar para proporcionar tu propia configuración. (I2f4d2, I4cd58, b/420443609)
Correcciones de errores
- Se corrigió un problema por el que la navegación provocaba que se activaran eventos de Lifecycle incorrectos. (I8bf6d, b/425901162, b/434109022)
Errores conocidos
- I8bf6d introdujo un error que provocó que los ciclos de vida se basaran en escenas en lugar de entradas individuales, lo que interrumpió el ciclo de vida para cualquier caso en el que el
keyproporcionado alNavEntryno sea unStringo tuNavEntryno haya anulado elcontentKeyy lo haya establecido como igual alkey(ten en cuenta que hacer esto exige que tu clave se pueda guardar en unBundle). Este problema se corrigió para la próxima versión. (b/440145700)
Versión 1.0.0-alpha07
13 de agosto de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha07. La versión 1.0.0-alpha07 contiene estas confirmaciones.
Actualización de MinSdk
- El valor predeterminado de minSdk para AndroidX se cambió de la API 21 a la API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
Cambios en la API
SavedStateNavEntryDecoratorahora usa elSaveableStateRegistryintegrado enSaveableStateProviderpara guardar y restablecer estados. (If8d9a)- Ahora, el
predictivePopTransitionSpecrecibe el borde de deslizamiento como parámetro, lo que te permite personalizar la transición según el borde desde el que el usuario inició el gesto de atrás predictivo. (I753a8)
Correcciones de errores
- Se solucionó un problema que provocaba que las escenas personalizadas se volvieran a calcular de forma infinita porque no se recordaba la escena más reciente. (I7ba84, b/418153031)
Actualización de dependencia
- Ahora Navigation3 depende de Navigation Event
1.0.0-alpha06.
Versión 1.0.0-alpha06
30 de julio de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.
Actualización de dependencia
- Ahora Navigation3 depende de Navigation Event
1.0.0-alpha05.
Versión 1.0.0-alpha05
2 de julio de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.
Cambios en el comportamiento
- El estado de
NavEntryahora se basa estrictamente en la lista actual de decoradores que se pasan aNavDisplay. Esto significa que los decoradores se deben intercambiar a lo largo de las pilas de actividades en el caso de que haya varias pilas de actividades para conservar el estado de los NavEntries en la pila de actividades. De lo contrario, los estados se borrarán como si las entradas se hubieran quitado (en lugar de un intercambio). (I7a759, b/428033667)
Versión 1.0.0-alpha04
18 de junio de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.
Cambios en la API
NavEntry.contentahora es privado. Para invocar contenido deNavEntry, llama a la nueva API deNavEntry.Content(), que ya no requiere un parámetrokeypara invocar. (Icd0fd, b/420991203)NavEntry.keyahora es un campo privado. El campocontentKeynuevo, que se genera a partir de la nueva lambdacontentKeyFactoryy tiene como valor predeterminado un hash que se puede guardar y que se genera a partir deNavEntry.key, debe identificar elNavEntryy sus estados pertinentes (I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812).
Cambios de dependencia
- Navigation3 ahora depende del nuevo artefacto
androidx.navigationevent.compose.
Versión 1.0.0-alpha03
4 de junio de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.
Correcciones de errores
Navigation3ya no borrará los estados del decorador parabackStacksque se hayan intercambiado y reemplazado por otra instancia debackStack. (I28a42, b/415076044)
Versión 1.0.0-alpha02
23 de mayo de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió un problema con
SavedStateNavEntryDecoratorque causaba colisiones para diferentes clases de datos con los mismos valores de propiedad. (b/418070648, Iff4775) - Se corrigió un problema de falta de clase que provocaba fallas cuando se ejecutaba sin declarar dependencias explícitas. (b/419049149, I4b4ed)
Versión 1.0.0-alpha01
20 de mayo de 2025
Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
Navigation3 es una nueva biblioteca de navegación creada específicamente para controlar la navegación dentro de la app de Jetpack Compose. El artefacto androidx.navigation3.runtime proporciona los componentes básicos, mientras que el artefacto androidx.navigation3.ui proporciona la capa de IU a través de la API de NavDisplay. Los desarrolladores pueden proporcionar su propio estado directamente a la función de componibilidad NavDisplay, que cambia el contenido según los cambios en el estado del desarrollador.
@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 */ }
})
Para obtener más información, consulta la guía de Navigation3.