navigation3
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
8 de octubre de 2025 | - | - | - | 1.0.0-alpha11 |
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-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") }
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-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
calculateScene
enSceneStrategy
ya 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 derememberSaveable
o de las instrucciones clave deremember
a partir de los valores correctos. (If1733, b/448709506) - El parámetro
onBack
paraSceneStrategy.calculateScene
se movió al nuevo alcance del receptor deSceneStrategyScope
para 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
onBack
que se pasa aNavDisplay
y a tuSceneStrategy
ya no proporciona un parámetrocount: Int
para indicar cuándo se deben quitar varias entradas. En cambio, la lambda() -> Unit
ahora 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
NavEntryWrapper
y reemplaza su funcionalidad por una claseNavEntry
final con un nuevo constructor secundario que tome unNavEntry
con 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
SavedStateNavEntryDecorator
porSaveableStateHolderNavEntryDecorator
, 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
SceneState
como alternativa aNavDisplay
ya no requieren usar el elementoLocalEntriesToRenderInCurrentScene
de composición local, que ahora es interno. (Ic40ef, b/414668196) - Se quitaron
SceneSetupNavEntryDecorator
yrememberSceneSetupNavEntryDecorator()
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
,SinglePaneScene
ySceneState
ahora 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
rememberNavBackStack
quitando el parámetro de tipo genérico redundante. La función ahora aceptavararg elements: NavKey
. (I03e45) - Las animaciones predeterminadas para
NavDisplay
ahora forman parte de la API común, lo que permite llamarlas desde todas las plataformas. (I71af9, b/447147159) - Se cambió el nombre de
EntryProviderBuilder
aEntryProviderScope
para 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 unSavedStateConfiguration
personalizado que esté configurado para garantizar el restablecimiento correcto 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
NavDisplay
que tome una lista deNavEntry<T>
decorada porrememberDecoratedNavEntries
. (I4025b, b/441940314) - Se movió
DialogScene
a un paquete nuevo. (Ia5840) - Se quitó la API pública
DecorateNavEntry
. En su lugar, usarememberDecoratedNavEntries
para unir un NavEntry con una lista de decoradores. (Id8c09) - La IU de Navigation3 ahora proporciona nuevas propiedades
transitionSpec
predeterminadas. (Ibcabd) - Se agregó un nuevo objeto
SceneState
para ayudar a administrar escenas. Esto también proporciona una nueva sobrecarga deNavDisplay
que toma elSceneState
y elNavigationEventState
. (Idfb46, b/444479133) NavDisplay
ahora te permite personalizar las transiciones en función de los elementosScene
a los que vas y desde los que vienes, ya que observa losTransition
,currentState
ytargetState
. (I906cc, b/443872322)NavigationEventInfo
ahora es unabstract class
en 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
.NavigationEventHandler
yNavigationBackHandler
(y sus variantes) ahora admiten una nueva sobrecarga que aceptaNavigationEventState
s 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
rememberDecoratedNavEntries
que toma una lista deNavEntry
para 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
NavBackStackSerializer
basada 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 sobrecargaSavedStateConfiguration
explícita en el código multiplataforma. (I73313, b/420443609) - Haz que el
swipeEdge
deNavigationEvent
sea un@IntDef
(Icee54, b/443950342) - Se restringió la serialización de
NavBackStack
a 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 sobrecargarememberNavBackStack
con unSavedStateConfiguration
explícito. (I1e418, b/420443609)
Correcciones de errores
- Se corrigió una falla durante el gesto de atrás predictivo cuando el elemento
NavDisplay
anidado 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ó
DecoratedNavEntryProvider
porrememberDecoratedNavEntries
, que crea y devuelve NavEntries decorados con la lista de decoradores proporcionados (I0fe1c, b/441328236). NavBackStack
ahora 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)NavBackStack
ahora 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)RememberNavBackStack
se movió acommonMain
para garantizar que se proporcione en todos los destinos de la plataforma. (Id69e7, b/420443609)
Correcciones de errores
NavDisplay
ahora mueve correctamente cadaNavEntry
individual alLifecycle.State
correcto. (I30aac, b/440145700)- Se corrigió un problema por el que
NavDisplay
ignoraba cualquierNavigationEventDispatcherOwner
anidado establecido a través deLocalNavigationEventDispatcherOwner
de 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 Runtime
admite 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 propioNavDisplay
personalizado. 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
NavDisplayInfo
ahora es público y se puede usar para recuperar la lista de entradas visibles deNavDisplay
. (Ibc91f)
Cambios en la API
- Se agregó un nuevo
NavBackStackSerializer
para usarlo junto conrememberNavBackStack
para realizar la restauración del estado.rememberNavBackStack()
ahora también toma unSavedStateConfiguration
que 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
key
proporcionado alNavEntry
no sea unString
o tuNavEntry
no haya anulado elcontentKey
y 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
SavedStateNavEntryDecorator
ahora usa elSaveableStateRegistry
integrado enSaveableStateProvider
para guardar y restablecer estados. (If8d9a)- Ahora, el
predictivePopTransitionSpec
recibe 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
NavEntry
ahora 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.content
ahora es privado. Para invocar contenido deNavEntry
, llama a la nueva API deNavEntry.Content()
, que ya no requiere un parámetrokey
para invocar. (Icd0fd, b/420991203)NavEntry.key
ahora es un campo privado. El campocontentKey
nuevo, que se genera a partir de la nueva lambdacontentKeyFactory
y tiene como valor predeterminado un hash que se puede guardar y que se genera a partir deNavEntry.key
, debe identificar elNavEntry
y 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
Navigation3
ya no borrará los estados del decorador parabackStacks
que 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
SavedStateNavEntryDecorator
que 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.