navigationevent
| Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
|---|---|---|---|---|
| 24 de septiembre de 2025 | - | - | - | 1.0.0-alpha09 |
Cómo declarar dependencias
Para agregar una dependencia en navigationevent, 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.navigationevent:navigationevent:1.0.0-alpha09" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-alpha09") }
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-alpha09
24 de septiembre de 2025
Lanzamiento de androidx.navigationevent:navigationevent-*:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.
Cambios en la API
- Usa el objeto singleton
NavigationEventTransitionState.Idledirectamente en lugar de crear una instancia deIdle(). (Ic7d9e, b/444734264) - Haz que los constructores de conveniencia sean internos; obtén instancias a través de
NavigationEventDispatcher.historypúblico en lugar de la construcción directa. (I3b7e0, b/444734264) - Se requiere crear
NavigationEventStatea través derememberNavigationEventState; el constructor ahora es interno. (Ie143c, b/444734264) - Adopta
onBackCompletedFallbacky reemplaza los usos defallbackOnBackPressedy el parámetro del constructor. El comportamiento no cambia; solo se invoca en eventos de atrás completados y no controlados. (Idabe9, b/444734264) - El constructor principal de
NavigationEventHistory(mergedHistory, currentIndex)ahora esinternal. Los consumidores externos deben usar los constructores públicos (el constructor vacío o el constructor basado en particiones) para crear instancias. (I1c047, b/444734264) - Se hizo que
View.setViewTreeNavigationEventDispatcherOwneracepte un propietario anulable (Ic9eb6, b/444436762). 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 quitaron la propiedad
NavigationEventDispatcher.statey la funcióngetState<T>()heredadas. Usa los nuevos flujos separadosdispatcher.transitionState(para el progreso del gesto) ydispatcher.history(para la pila de navegación). (Ic2ceb, b/444734264) - Se reemplaza la devolución de llamada
NavigationEventInput.onInfoChanged(...). Implementa la nueva devolución de llamadaonHistoryChanged(history: NavigationEventHistory)para recibir actualizaciones como un solo objetoNavigationEventHistory. (I23e0b, b/444734264) - Se introduce un nuevo
NavigationEventDispatcher.historyglobalStateFlow. Este flujo no genérico permite que los observadores se suscriban solo a los cambios en la pila de navegación y se mantiene estable durante el progreso del gesto. Es la contraparte detransitionState. (I1db10, b/444734264) - Se introduce un nuevo
NavigationEventDispatcher.transitionStateglobalStateFlow. Este flujo no genérico permite que los observadores se suscriban solo al estado del gesto físico (Idle/InProgress), independientemente del historial. (I171fa, b/444734264) - Presenta la clase
NavigationEventHistoryState. Esta será la API principal para observar el historial de información de navegación, independientemente del estado de los gestos. (I81ca5, b/444734264) NavigationEventahora está marcado como@Immutable, lo que permite que el compilador de Compose optimice las recomposiciones. (If78c7, 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) - Agrega el nuevo
@StableNavigationEventState<T>titular del estado a la bibliotecanavigationevent-compose. Este objeto combina el historial local con el estado del gesto local y será el vínculo principal entrerememberNavigationEventStateyNavigationEventHandler. (Ifb69f, b/444734264) - Agrega una nueva propiedad
transitionState: TransitionStatepública y de solo lectura aNavigationEventHandler. Los controladores ahora mantienen su propio estado de transición, que los sistemas externos pueden observar. (I9acd2, b/444734264) - Se presenta la nueva clase sellada
TransitionState. Esta será la API principal para observar el estado de los gestos, independientemente del historial de navegación. (Id4beb, b/444734264) - Expón
currentInfo,backInfoyforwardInfocomo propiedades públicas de solo lectura enNavigationEventHandler. (Ia7636, b/444734264) - Las implementaciones de
NavigationEventHandlerahora deben proporcionar un valorinitialInfo: Tal constructor base. (Idcfea, b/444734264) - Reemplaza
OnBackInvokedInputporOnBackInvokedOverlayInputoOnBackInvokedDefaultInput. (I5323f, b/428948766) - Marcar
NavigationEventStatecomo@ImmutableEsto mejora el rendimiento de Compose, ya que garantiza que los elementos componibles que observan este estado puedan omitir correctamente la recomposición. (I399c8) - Cambia el nombre de
NavigationEventInfo.NotProvidedaNavigationEventInfo.None;y actualiza las referencias. No hay cambios de comportamiento. (I5e2d4) NavigationEventInfoahora está marcado como@Immutable, lo que permite que el compilador de Compose optimice las recomposiciones. (I7c112)- Mejora la ergonomía de Java con una interfaz divertida para la resiliencia de la finalización hacia atrás. (I8a860)
- Se cambió el nombre de
onHasEnabledHandlerChangedporonHasEnabledHandlersChanged. Esto aclara que la devolución de llamada informa sobre el estado de habilitación colectivo de todos los controladores, no solo de uno. (I1af61, b/443711297) - Quita
hasEnabledHandler()deNavigationEventDispatcher;y usaNavigationEventInput.onHasEnabledHandlersChangeden su lugar. (Idef72, b/443711297) - Agrega la devolución de llamada
onInfoChangedaNavigationEventInputpara notificar a los objetos de escucha sobre los cambios en el historial de navegación. Esto proporciona el contexto completo de las pilas actual, anterior y siguiente, lo que permite que las entradas reaccionen a la información contextual. (I69a8b, b/443282983) - Haz que el
swipeEdgedeNavigationEventsea un@IntDef(Icee54, b/443950342) - Agrega un parámetro
priorityaNavigationEventDispatcher.addInputpara definir el alcance de un dispatcher en una prioridad. Los eventos comoonHasEnabledCallbacksChangedahora se activan solo cuando cambian las devoluciones de llamada en esa prioridad. (I3e488, b/443711297) - Se cambió el nombre del parámetro
NavigationEventDispatcherdeparentDispatchera parent para mayor claridad. (Id4f1f, b/443801782) - Se quitó
NavigationEventPriorityy se agregó@IntDefpara los usuarios de Java (I10a9f, b/440514265). - Aplica el contrato del controlador de navegación. Si tu
NavigationEventHandlerestableceisBackEnabledoisForwardEnabledentrue, ahora debes anularonBackCompletedoonForwardCompleted, respectivamente. Las implementaciones predeterminadas ahora generan una excepción para evitar errores silenciosos. (I17c62) - Se aplican valores de prioridad válidos cuando se agregan controladores de eventos de navegación. Llamar a
addHandlercon una prioridad no admitida ahora arrojará unaIllegalArgumentException, lo que proporcionará comentarios inmediatos sobre el uso incorrecto en todas las plataformas de destino. (I3c474)
Correcciones de errores
- Haz que
addHandlersea idempotente y que ignore los registros duplicados. (I052aa, b/444734264) - Mantén las propiedades
NavigationEventStatesincronizadas durante la recomposición. (Ib3b4d, b/444734264) - Asegúrate de que
NavigationEventInputsreciba la información contextual actual (actual, atrás, adelante) inmediatamente después del registro. (Ie65bf, b/443282983)
Versión 1.0.0-alpha08
10 de septiembre de 2025
Lanzamiento de androidx.navigationevent:navigationevent-*:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.
Nuevas funciones
- Se introduce una API de
NavigationEventHandlerbasada en lambda que reemplaza el controlador basado en Flow. Controla los gestos hacia atrás y hacia adelante con devoluciones de llamada simples en lugar de recopilar flujos, lo que reduce el código estándar y evita problemas de cancelación. ProporcionaNavigationBackHandleryNavigationForwardHandlercomo APIs de conveniencia segmentadas. Quita elNavigationEventHandlerbasado en Flow y migra a las nuevas devoluciones de llamada. (I23bac, b/436248277) - Permite que los usuarios pasivos accedan a la pila de navegación hacia atrás completa a través de la información combinada de atrás. Habilita las IU para renderizar vistas previas y el historial de navegación anidado en lugar de limitarse a la devolución de llamada superior. (I7a510, b/436248277)
- Se introduce un modelo explícito de atrás/actual/adelante para aclarar el estado de navegación y admitir la navegación hacia adelante con controladores anidados. (Ib86da, b/420443609)
- Agrega los métodos
onForward*yisForwardEnabledaNavigationEventCallback. (Ic100f, b/436248290) - Agrega compatibilidad con la navegación hacia adelante a
NavigationEventInput. (I5734b)
Cambios en la API
- Habilita las pruebas de eventos de navegación hacia adelante con
TestNavigationEventCallback. Usa los hooksisForwardEnabledyonForward*. (I21fb5, b/420443609) - Se cambió el nombre de las devoluciones de llamada de
onEvent*aonBack*enNavEvent. (I228b3, b/436248290) - Convierte
SwipeEdgeen una clase intercalada. (Id5e01) - Haz que la biblioteca
navigationeventsea interoperable con Java. Ahora se puede acceder a todas las APIs públicas desde el código Java, lo que permite una integración perfecta en proyectos de varios lenguajes o solo en Java. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294) - Se aclararon los roles de la API cambiando el nombre de
NavigationEventCallbackaNavigationEventHandler. Este cambio refleja mejor el propósito de la clase de controlar los gestos de navegación en varias etapas. El métodoaddCallbackcorrespondiente ahora esaddHandler. (I2492a, b/443040331)
Correcciones de errores
- Evita que la resiliencia de atrás se ejecute en la navegación hacia adelante. (I74814, b/436248290)
- Se agregó compatibilidad con la navegación hacia adelante predictiva. Las APIs de
NavigationEventahora controlan los gestos hacia atrás y hacia adelante, lo que permite animaciones coherentes para ambas direcciones de navegación. (Idc98c, b/436248290) - Se evita una falla de
IllegalStateExceptiondurante la recomposición cuando se quita un elementoNavigationEventDispatcherOwnersecundario. (Iff50c, b/412629020) - Los usuarios pasivos ahora pueden acceder a la pila de navegación completa a través de la información de atrás combinada, lo que permite que las IU rendericen vistas previas y el historial de navegación anidado en lugar de limitarse a la devolución de llamada superior. (I7a510, b/436248277)
Versión 1.0.0-alpha07
27 de agosto de 2025
Lanzamiento de androidx.navigationevent:navigationevent-*:1.0.0-alpha07. La versión 1.0.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Se quita
NavigationEventDispatcher.onHasEnabledCallbacksChanged. (I50e97) - Haz que
NavigationEventCallback.onEventCompleted()sea abstracto. (I36b38) - Se cambiaron los métodos
NavigationEventCallback#on*aprotected. Actualiza el código de llamada para anularlos. (I6b691) - Se cambió el nombre de las funciones
DirectNavigationEventInput. (Iffb62) - Se cambió el nombre de
NavigationEventInput.onAttachporonAdded. (I2d0b8) - Se cambió el nombre de
NavigationEventInput.onDetachporonRemoved. (I2d0b8) - Se cambió el nombre de
NavigationEventInputHandlerporNavigationEventInput. (I676a4) - Se agregó
@EmptySuperaNavigationEventInput.onHasEnabledCallbacksChanged. (If9853) - Implementa
onAttachenNavigationEventInputHandler. (I03648) - Implementa
onDetachenNavigationEventInputHandler. (I03648) NavigationEventCallbackpredeterminado habilitado tras la creación (Ic0188)- Reemplaza
NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackconNavigationEventInput.onHasEnabledCallbacksChanged. (I64e93) - Requiere el subproceso principal para
NavigationEventDispatcher.addInput. (Ic2930) - Requiere el subproceso principal para
NavigationEventDispatcher.removeInput. (Ic2930) - Se quita
Dispatcher.addOnHasEnabledCallbacksChangedCallback. Se reemplazó conDispatcher.onHasEnabledCallbacksChanged(Ida3e3, b/436530096)
Correcciones de errores
- Se corrigió un error por el que agregar un controlador ya adjunto o quitar uno no adjunto activaba una lógica de ciclo de vida incorrecta. (I9e47b)
Versión 1.0.0-alpha06
13 de agosto de 2025
Lanzamiento de androidx.navigationevent:navigationevent-*:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.
Nuevas funciones
API de Passive Listeners
Ahora puedes pasar información contextual personalizada desde cualquier host de navegación y escuchar de forma pasiva los cambios de estado de los gestos desde cualquier lugar de la IU. Esto habilita animaciones contextuales para el gesto atrás predictivo y otros tipos de navegación controlada por gestos.
Esta función tiene dos partes:
- Providing Info: Usa
NavigationEventInfopara transportar datos personalizados. - Estado de consumo: Usa
dispatcher.state(NavigationEventState) para observar el progreso y el contexto del gesto.
NavigationEventCallbackahora expone el métodosetInfo(currentInfo, previousInfo)para establecer el contexto de gestos en una sola llamada (I1d5e7, b/424470518).NavigationEventHandleragrega una nueva sobrecarga que aceptacurrentInfoypreviousInfo, lo que la convierte en la API principal para proporcionar contexto en las apps de Compose (I6ecd3, b/424470518).
Ejemplo:
data class MyScreenInfo(val screenName: String) : NavigationEventInfo
NavigationEventHandler(
enabled = true,
currentInfo = MyScreenInfo("Details Screen"),
previousInfo = MyScreenInfo("Home Screen")
) { /* Handle back completion */ }
NavigationEventDispatcherahora exponedispatcher.stateydispatcher.getState<T>()(If7fae, Ia90ca, b/424470518). Estas APIs basadas enStateFlowpermiten que cualquier IU observe el progreso del gesto y los datos contextuales sin controlar el evento directamente.
Ejemplo:
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 */ }
}
Agrega la propiedad
progressaNavigationEventState(I7b196) que devuelvelatestEvent.progresscuando está en curso o0Fen otros casos:val progress = state.progressSe agregó el elemento
NavigationEventDispatcherOwnercomponible para crear, vincular y desechar instancias deNavigationEventDispatcherde forma jerárquica. Permite el control dinámico del estado habilitado del despachador y la limpieza automática.@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
Cambios en la API
- Se quitó el parámetro
isPassthroughdeNavigationEventCallback. (I99028, b/424470518) - Ahora, los constructores de
NavigationEventStateson internos. Para realizar pruebas, actualiza el estado (el valor predeterminado esIdle) a través deDirectNavigationEventInputHandler. Llama ahandleOnStartedohandleOnProgressedpara establecer el estado enInProgress, y ahandleOnCompletedohandleOnCancelledpara volver aIdle. Para actualizarNavigationEventInfo, usaNavigationEventCallback.setInfo. (I93dca, b/424470518) - Se agregaron parámetros predeterminados a
NavigationEventpara permitir una instanciación más sencilla y simplificar las pruebas que se deben usar en lugar deTestNavigationEvent. (I5dc49, I232f4) - Se agregó un
TestNavigationEventCallbackpara probar eventos de navegación con estados actuales o anteriores específicos. (Idd22e, b/424470518) NavigationEventInputHandlerse convirtió en una clase abstracta para reemplazar elAbstractNavigationEventInputHandleranterior por una implementación enDirectNavigationEventInputHandler(Iadde5, Ifed40I3897c, b/432616296, b/435416924).- Se cambió el nombre de los prefijos de las funciones
send*enNavigationEventInputHandlerporhandle*. (Iffcaf) - Ahora,
OnBackInvokedInputHandlerextiende el nuevoabstractNavigationInputHandler. (Ib45aa) - Se cambió
NavigationEventDispatcherOwnerpara que requiera un distribuidor principal en el que debes pasarnullde forma explícita para crear un distribuidor raíz. (Ia6f64, b/431534103)
Correcciones de errores
- Se mejoró la eficiencia evitando copias de recopilación en
NavigationEventDispatcher.dispose(). (I4ab09) - Se corrigió un problema por el que
NavigationEventHandlerno respondía correctamente a los cambios en su estado habilitado. (Ia5268,I19bec, I5be5c, b/431534103)
Actualizaciones de la documentación
- Se expandieron los KDocs para
NavigationEventpara aclarar su rol como wrapper de eventos unificado y el comportamiento de las propiedades de detalle en diferentes tipos de navegación (gestos, clics). (I91e8d) - Se actualizó la documentación para el control del sistema hacia atrás de las APIs de Compose (
BackHandler,PredictiveBackHandler,NavigationEventHandler) para destacar el comportamiento específicamente en torno al orden de devolución de llamada. (I7ab94, )
Actualización de dependencia
NavigationEventahora depende de Compose Runtime 1.9.0-beta03, lo que permite que el artefactonavigationevent-composeadmita todos los destinos de KMP. (Ia1b87)
Versión 1.0.0-alpha05
30 de julio de 2025
Lanzamiento de androidx.navigationevent:navigationevent-*:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.
Compatibilidad con la jerarquía superior-secundario:
Un NavigationEventDispatcher ahora puede tener despachadores principales y secundarios, lo que forma una estructura de árbol jerárquica. Esto permite que los eventos de navegación se propaguen y se administren de manera más flexible en los componentes de IU de Compose complejos, ya que reflejan la jerarquía estructural de la IU a través de distribuidores encadenados. (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 propiedad jerárquica isEnabled permite el control descendente de un dispatcher. Cuando isEnabled se establece en false en un dispatcher, se inhabilitan automáticamente todos sus dispatchers descendientes. Esta función permite desactivar ramas completas del sistema de eventos de navegación de manera eficiente. (I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
Además, la propiedad isEnabled en NavigationEventCallback ahora respeta el estado habilitado de su dispatcher asociado. Esto significa que una devolución de llamada se considera habilitada solo si tanto la devolución de llamada como su dispatcher (incluidos sus elementos superiores) están habilitados, lo que garantiza un control jerárquico coherente sobre la activación de la devolución de llamada. (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()
Se introdujo un nuevo método dispose() para limpiar correctamente los despachadores y sus elementos secundarios. Si llamas a dispose(), se detienen los objetos de escucha para evitar fugas de memoria, se descartan de forma recursiva todos los distribuidores secundarios, se quitan todas las devoluciones de llamada registradas en el distribuidor y se desvincula del elemento superior. Esto garantiza que los recursos se liberen correctamente cuando ya no se necesiten los despachadores. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
Si se llama a algún método público en un dispatcher descartado, se arroja un IllegalStateException de inmediato. Esto evita errores silenciosos y ayuda a los desarrolladores a identificar el uso inadecuado durante el desarrollo. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
Nota: Presentaremos un nuevo elemento NavigationEventDispatcherOwner Composable que administra automáticamente un dispatcher secundario dentro de la IU de Compose en aosp/3692572. Sin embargo, este cambio no se incluyó en la versión actual y se planea para la próxima.
Biblioteca de pruebas de navegación
- Se agregó el módulo
navigationevent-testingpara proporcionar utilidades de prueba dedicadas para la biblioteca denavigationevent. (0e50b6) - Se agregó la clase de utilidad falsa
TestNavigationEventCallbackpara las pruebas. Registra las llamadas a métodos de devolución de llamada y almacena los elementosNavigationEventrecibidos para admitir la verificación. (4a0246) - Se agregó la función de utilidad falsa
TestNavigationEventpara crear instancias deNavigationEventcon valores predeterminados, lo que simplifica las pruebas de unidades para el procesamiento de eventos de navegación. (3b63f5) - Se agregó la clase de utilidad falsa
TestNavigationEventDispatcherOwnerpara las pruebas. Realiza un seguimiento de los recuentos de eventos de cambio de estado habilitado y de resguardo para admitir la verificación de interacciones en las pruebas. (c8753e)
Cambios en la API
- Mueve
NavigationEventInputHandlerdeandroidMainacommonMainpara que esté disponible en el código común de KMP. Se agregaron nuevos métodospublic send*para despachar eventos. Cambia las funciones de envío enNavigationEventDispatcherdepublicainternal; ahora los usuarios deben usarNavigationEventInputHandlerpara enviar eventos. (Ia7114) - Se cambió el nombre de
NavigationInputHandlerporOnBackInvokedInputHandler. (I63405)
Correcciones de errores
- Se refactorizó
NavigationEventDispatcherpara reducir la sobrecarga evitando asignaciones de listas intermedias y mejorando el rendimiento del envío de devoluciones de llamada. (I82702, I1a9d9) - Se agregaron anotaciones
@FloatRangea los campostouchX,touchYyprogressenNavigationEventpara aplicar rangos de valores válidos en el tiempo de compilación y mejorar la seguridad de la API. (Iac0ec)
Versión 1.0.0-alpha04
2 de julio de 2025
Lanzamiento de androidx.navigationevent:navigationevent-*:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.
Correcciones de errores
- Se usó
implementedInJetBrainsForkparanavigationevent-composey se agregó un destinocommonStubspara que coincida con las convenciones de Compose. Cambio solicitado por JetBrains. (f60c79) - Se corrigió la aplicación del complemento del compilador de Compose para Kotlin/Native para garantizar la generación correcta de stubs. No se afecta el comportamiento ni las APIs públicas. (1890c9)
Versión 1.0.0-alpha03
18 de junio de 2025
Lanzamiento de androidx.navigationevent:navigationevent-*:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.
Nuevas funciones
- Se introdujo un nuevo módulo
navigationevent-composepara admitir las funciones de Jetpack Compose en la bibliotecanavigationevent. (980d78) NavigationEventCompose agregó una nueva composición localLocalNavigationEventDispatcherOwner. Devuelve un valor anulable para determinar mejor si está disponible en la composición actual.NavigationEventHandlerahora generará un error si no se encuentra el propietario subyacente. (62ffda)NavigationEventCompose agregó un nuevo elementoNavigationEventHandlercomponible para controlar eventos (gesto atrás predictivo). Proporciona unFlowde objetosNavigationEventque se deben recopilar en la expresión lambda de suspensión que proporcionas 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
}
}
Cambios en la API
- Ahora, cada
NavigationEventCallbacksolo se puede registrar con unNavigationEventDispatchera la vez. Si se agrega a varios despachadores, se arroja unIllegalStateException. Ten en cuenta que este comportamiento difiere deOnBackPressedDispatcher, que permite varios despachadores. (e82c19) - Se convirtió
isPassThroughenvalpara evitar la mutación durante la navegación, lo que podría interrumpir el envío deNavigationEvent. (I0b287)
Versión 1.0.0-alpha02
4 de junio de 2025
Lanzamiento de androidx.navigationevent:navigationevent-*:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Reemplaza el constructor secundario de
NavigationEventDispatcherpor argumentos predeterminados. (I716a0) - Quita la propiedad de prioridad de
NavigationEventCallback. En su lugar, pasa la prioridad aNavigationEventDispatcher.addCallback(). (I13cae)
Correcciones de errores
- Se corrigió un
ConcurrentModificationExceptionque podía ocurrir cuando se llamaba aNavigationEventCallback.remove()debido a la modificación simultánea de la lista interna de elementos que se pueden cerrar. (b/420919815)
Versión 1.0.0-alpha01
20 de mayo de 2025
Lanzamiento de androidx.navigationevent:navigationevent-*:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
- La biblioteca de
androidx.navigationeventproporciona una API que prioriza KMP para controlar el sistema hacia atrás, así como Atrás predictivo. El elementoNavigationEventDispatcherfunciona como una API común para registrar una o más instancias deNavigationEventCallbackpara recibir eventos de Atrás del sistema. - Esta capa se encuentra debajo de las APIs lanzadas anteriormente en
androidx.activityy tiene como objetivo ser un reemplazo menos subjetivo para usar las APIs de Activity en componentes de nivel superior o usar directamente las APIs deOnBackInvokedDispatcherdel framework de Android. Las APIs deandroidx.activityse reescribieron sobre las APIs de Navigation Event como parte de Activity 1.12.0-alpha01.