navigationevent
| Ultimo aggiornamento | Release stabile | Candidato per la release | Release beta | Release alpha |
|---|---|---|---|---|
| 24 settembre 2025 | - | - | - | 1.0.0-alpha09 |
Dichiara le dipendenze
Per aggiungere una dipendenza da navigationevent, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per
la tua app o il tuo modulo:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-alpha09" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-alpha09") }
Per saperne di più sulle dipendenze, consulta Aggiungi dipendenze di build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Non sono disponibili note di rilascio per questo artefatto.
Versione 1.0
Versione 1.0.0-alpha09
24 settembre 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha09 è stato rilasciato. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
- Utilizza direttamente l'oggetto singleton
NavigationEventTransitionState.Idleanziché istanziareIdle(). (Ic7d9e, b/444734264) - Rendi interni i costruttori di convenienza; ottieni istanze tramite
NavigationEventDispatcher.historypubblico anziché tramite costruzione diretta. (I3b7e0, b/444734264) - Richiedi la creazione di
NavigationEventStatetramiterememberNavigationEventState; il costruttore è ora interno. (Ie143c, b/444734264) - Adotta
onBackCompletedFallbacksostituisci gli utilizzi difallbackOnBackPressede il parametro del costruttore. Il comportamento non cambia; viene richiamato solo per gli eventi Indietro completati e non gestiti. (Idabe9, b/444734264) - Il costruttore principale di
NavigationEventHistory(mergedHistory, currentIndex)è orainternal. I consumer esterni devono utilizzare i costruttori pubblici (il costruttore vuoto o quello basato sulla partizione) per creare istanze. (I1c047, b/444734264) - Fai in modo che
View.setViewTreeNavigationEventDispatcherOwneraccetti il proprietario nullable (Ic9eb6, b/444436762) NavigationEventInfoora è unabstract classanziché uninterface. Aggiorna tutte le implementazioni personalizzate in modo che ereditino dalla classe (ad es.data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)- La proprietà
NavigationEventDispatcher.statelegacy e la funzionegetState<T>()sono state rimosse. Utilizza i nuovi flussi separatidispatcher.transitionState(per l'avanzamento del gesto) edispatcher.history(per lo stack di navigazione). (Ic2ceb, b/444734264) - Il callback
NavigationEventInput.onInfoChanged(...)viene sostituito. Implementa il nuovo callbackonHistoryChanged(history: NavigationEventHistory)per ricevere gli aggiornamenti come un singolo oggettoNavigationEventHistory. (I23e0b, b/444734264) - Introduci una nuova
NavigationEventDispatcher.historyglobaleStateFlow. Questo flusso non generico consente agli osservatori di iscriversi solo alle modifiche dello stack di navigazione e rimane stabile durante l'avanzamento del gesto. Questo è il corrispettivo ditransitionState. (I1db10, b/444734264) - Introduci una nuova
NavigationEventDispatcher.transitionStateglobaleStateFlow. Questo flusso non generico consente agli osservatori di iscriversi solo allo stato del gesto fisico (Idle/InProgress), separatamente dalla cronologia. (I171fa, b/444734264) - Presenta il corso
NavigationEventHistoryState. Questa API fungerà da API principale per l'osservazione della cronologia delle informazioni di navigazione, separatamente dallo stato dei gesti. (I81ca5, b/444734264) NavigationEventora è contrassegnato come@Immutable, consentendo al compilatore Compose di ottimizzare le ricomposizioni. (If78c7, b/444734264)- Le API del gestore
navigationevent-composesono aggiornate.NavigationEventHandlereNavigationBackHandler(e varianti) ora supportano un nuovo overload che accettaNavigationEventStates sollevati. Gli overload semplici (che accettanocurrentInfo) vengono conservati e ora utilizzano internamente questo nuovo modello di stato. (Ic3251, b/444734264) - Aggiungi il nuovo holder di stato
@StableNavigationEventState<T>alla librerianavigationevent-compose. Questo oggetto combina la cronologia locale con lo stato dei gesti locali e sarà il collegamento principale trarememberNavigationEventStateeNavigationEventHandler. (Ifb69f, b/444734264) - Aggiungi una nuova proprietà
transitionState: TransitionStatepubblica e di sola lettura aNavigationEventHandler. Ora i gestori mantengono il proprio stato di transizione, che i sistemi esterni possono osservare. (I9acd2, b/444734264) - Presenta la nuova classe sigillata
TransitionState. che fungerà da API principale per osservare lo stato dei gesti, separatamente dalla cronologia di navigazione. (Id4beb, b/444734264) - Esporre
currentInfo,backInfoeforwardInfocome proprietà pubbliche di sola lettura suNavigationEventHandler. (Ia7636, b/444734264) - Le implementazioni di
NavigationEventHandlerora devono fornire un valoreinitialInfo: Tal costruttore di base. (Idcfea, b/444734264) - Sostituisci
OnBackInvokedInputconOnBackInvokedOverlayInputoOnBackInvokedDefaultInput. (I5323f, b/428948766) - Contrassegna
NavigationEventStatecome@Immutable. In questo modo, le prestazioni di Compose migliorano perché i composable che osservano questo stato possono saltare correttamente la ricomposizione. (I399c8) - Rinomina
NavigationEventInfo.NotProvidedinNavigationEventInfo.None;per aggiornare i riferimenti. Nessuna modifica del comportamento. (I5e2d4) NavigationEventInfoora è contrassegnato come@Immutable, consentendo al compilatore Compose di ottimizzare le ricomposizioni. (I7c112)- Migliora l'ergonomia di Java con un'interfaccia divertente per il fallback del completamento della parentesi. (I8a860)
- Rinomina
onHasEnabledHandlerChangedinonHasEnabledHandlersChanged. Ciò chiarisce che il report di callback si basa sullo stato di attivazione collettivo di tutti i gestori, non solo di uno. (I1af61, b/443711297) - Rimuovi
hasEnabledHandler()daNavigationEventDispatcher;e utilizzaNavigationEventInput.onHasEnabledHandlersChanged. (Idef72, b/443711297) - Aggiungi il callback
onInfoChangedaNavigationEventInputper comunicare agli ascoltatori le modifiche alla cronologia di navigazione. In questo modo, viene fornito il contesto completo degli stack corrente, indietro e avanti, consentendo agli input di reagire alle informazioni contestuali. (I69a8b, b/443282983) - Rendi
NavigationEvent'sswipeEdgeun@IntDef(Icee54, b/443950342) - Aggiungi un parametro
priorityaNavigationEventDispatcher.addInputper limitare un dispatcher a una priorità; gli eventi comeonHasEnabledCallbacksChangedora vengono attivati solo quando cambiano i callback con quella priorità. (I3e488, b/443711297) - Rinomina il parametro
NavigationEventDispatcherdaparentDispatchera parent per maggiore chiarezza. (Id4f1f, b/443801782) - Rimozione di
NavigationEventPrioritya favore di@IntDefper gli utenti Java (I10a9f, b/440514265) - Applica il contratto del gestore di navigazione. Se
NavigationEventHandlerimpostaisBackEnabledoisForwardEnabledsutrue, ora devi eseguire l'override dionBackCompletedoonForwardCompletedrispettivamente. Le implementazioni predefinite ora generano un'eccezione per evitare errori silenziosi. (I17c62) - Applica valori di priorità validi quando aggiungi gestori di eventi di navigazione. La chiamata
addHandlercon una priorità non supportata ora genererà unIllegalArgumentException, fornendo un feedback immediato per l'utilizzo errato su tutte le piattaforme di destinazione. (I3c474)
Correzioni di bug
- Rendi
addHandleridempotente; ignora le registrazioni duplicate. (I052aa, b/444734264) - Mantieni sincronizzate le proprietà
NavigationEventStatedurante la ricomposizione. (Ib3b4d, b/444734264) - Assicurati che
NavigationEventInputsriceva le informazioni contestuali correnti (attuale, indietro, avanti) immediatamente dopo la registrazione. (Ie65bf, b/443282983)
Versione 1.0.0-alpha08
10 settembre 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha08 è stato rilasciato. La versione 1.0.0-alpha08 contiene questi commit.
Nuove funzionalità
- Introduci un'API
NavigationEventHandlerbasata su Lambda che sostituisce l'handler basato sul flusso. Gestisci i gesti di scorrimento avanti e indietro con semplici callback anziché raccogliere flussi, riducendo il boilerplate ed evitando problemi di annullamento. FornisciNavigationBackHandlereNavigationForwardHandlercome API di convenienza mirate. RimuoviNavigationEventHandlerbasato sul flusso; esegui la migrazione ai nuovi callback. (I23bac, b/436248277) - Consente agli ascoltatori passivi di accedere all'intera cronologia di navigazione tramite le informazioni combinate. Consente alle UI di eseguire il rendering delle anteprime e della cronologia di navigazione nidificata anziché essere limitate al callback di primo livello. (I7a510, b/436248277)
- Introduci un modello esplicito di indietro/corrente/avanti per chiarire lo stato di navigazione e supportare la navigazione in avanti con i gestori nidificati. (Ib86da, b/420443609)
- Aggiungi i metodi
onForward*eisForwardEnabledaNavigationEventCallback. (Ic100f, b/436248290) - Aggiungi il supporto della navigazione in avanti a
NavigationEventInput. (I5734b)
Modifiche alle API
- Abilita il test degli eventi di navigazione in avanti con
TestNavigationEventCallback. Utilizza gli hookisForwardEnabledeonForward*. (I21fb5, b/420443609) - Rinomina i callback
onEvent*inonBack*inNavEvent. (I228b3, b/436248290) - Converti
SwipeEdgein una classe inline. (Id5e01) - Rendi la libreria
navigationeventinteroperabile con Java. Tutte le API pubbliche sono ora completamente accessibili dal codice Java, consentendo una perfetta integrazione in progetti multilingue o solo Java. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294) - Chiarisci i ruoli API rinominando
NavigationEventCallbackinNavigationEventHandler. Questa modifica riflette meglio lo scopo della classe di gestione dei gesti di navigazione in più fasi. Il metodoaddCallbackcorrispondente ora èaddHandler. (I2492a, b/443040331)
Correzioni di bug
- Impedisci l'esecuzione del fallback indietro durante la navigazione in avanti. (I74814, b/436248290)
- Aggiungi il supporto per la navigazione predittiva in avanti. Le API
NavigationEventora gestiscono i gesti Indietro e Avanti, consentendo animazioni coerenti per entrambe le direzioni di navigazione. (Idc98c, b/436248290) - Evita un arresto anomalo di
IllegalStateExceptiondurante la ricomposizione quando viene rimosso unNavigationEventDispatcherOwnerfiglio. (Iff50c, b/412629020) - Gli ascoltatori passivi ora possono accedere all'intera cronologia di navigazione tramite le informazioni combinate, consentendo alle UI di eseguire il rendering delle anteprime e della cronologia di navigazione nidificata anziché essere limitate al callback di primo livello. (I7a510, b/436248277)
Versione 1.0.0-alpha07
27 agosto 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha07 è stato rilasciato. La versione 1.0.0-alpha07 contiene questi commit.
Modifiche alle API
- Rimuovi
NavigationEventDispatcher.onHasEnabledCallbacksChanged. (I50e97) - Rendi
NavigationEventCallback.onEventCompleted()astratto. (I36b38) - Modifica i metodi di
NavigationEventCallback#on*inprotected. Aggiorna il codice paese per ignorarli. (I6b691) - Rinomina le funzioni
DirectNavigationEventInput. (Iffb62) - Rinomina
NavigationEventInput.onAttachinonAdded. (I2d0b8) - Rinomina
NavigationEventInput.onDetachinonRemoved. (I2d0b8) - Rinomina
NavigationEventInputHandlerinNavigationEventInput. (I676a4) - Aggiungi
@EmptySuperaNavigationEventInput.onHasEnabledCallbacksChanged. (If9853) - Implementa
onAttachinNavigationEventInputHandler. (I03648) - Implementa
onDetachinNavigationEventInputHandler. (I03648) - Imposta
NavigationEventCallbackpredefinito su "Abilitato" al momento della creazione. (Ic0188) - Sostituisci
NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackconNavigationEventInput.onHasEnabledCallbacksChanged. (I64e93) - Richiedi il thread principale per
NavigationEventDispatcher.addInput. (Ic2930) - Richiedi il thread principale per
NavigationEventDispatcher.removeInput. (Ic2930) - Rimuovi
Dispatcher.addOnHasEnabledCallbacksChangedCallback. Sostituisci conDispatcher.onHasEnabledCallbacksChanged. (Ida3e3, b/436530096)
Correzioni di bug
- Correggi il bug per cui l'aggiunta di un gestore già collegato o la rimozione di uno non collegato attivava una logica del ciclo di vita errata. (I9e47b)
Versione 1.0.0-alpha06
13 agosto 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha06 è stato rilasciato. La versione 1.0.0-alpha06 contiene questi commit.
Nuove funzionalità
API Passive Listeners
Ora puoi trasmettere informazioni contestuali personalizzate da qualsiasi host di navigazione e ascoltare passivamente le modifiche dello stato dei gesti da qualsiasi punto dell'interfaccia utente. Ciò consente animazioni sensibili al contesto per il gesto Indietro predittivo e altre navigazioni basate su gesti.
Questa funzionalità è composta da due parti:
- Fornire informazioni: utilizza
NavigationEventInfoper trasferire dati personalizzati. - Stato di consumo: utilizza
dispatcher.state(NavigationEventState) per osservare l'avanzamento e il contesto del gesto.
NavigationEventCallbackora espone il metodosetInfo(currentInfo, previousInfo)per impostare il contesto dei gesti in una sola chiamata (I1d5e7, b/424470518).NavigationEventHandleraggiunge un nuovo overload che accettacurrentInfoepreviousInfo, rendendola l'API principale per fornire il contesto nelle app Compose (I6ecd3, b/424470518).
Esempio:
data class MyScreenInfo(val screenName: String) : NavigationEventInfo
NavigationEventHandler(
enabled = true,
currentInfo = MyScreenInfo("Details Screen"),
previousInfo = MyScreenInfo("Home Screen")
) { /* Handle back completion */ }
NavigationEventDispatcherora esponedispatcher.stateedispatcher.getState<T>()(If7fae, Ia90ca, b/424470518). Queste API basate suStateFlowconsentono a qualsiasi UI di osservare l'avanzamento dei gesti e i dati contestuali senza gestire direttamente l'evento.
Esempio:
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 */ }
}
Aggiungi la proprietà
progressaNavigationEventState(I7b196) che restituiscelatestEvent.progressquando è in corso o0Fin caso contrario:val progress = state.progressAggiungi il composable
NavigationEventDispatcherOwnerper creare, collegare ed eliminare le istanzeNavigationEventDispatcherin modo gerarchico. Consente il controllo dinamico dello stato di attivazione del dispatcher e la pulizia automatica.@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
Modifiche alle API
- Il parametro
isPassthroughè stato rimosso daNavigationEventCallback. (I99028, b/424470518) - I costruttori
NavigationEventStatesono ora interni. Per i test, aggiorna lo stato (il valore predefinito èIdle) tramiteDirectNavigationEventInputHandler. ChiamahandleOnStartedohandleOnProgressedper impostare lo stato suInProgressehandleOnCompletedohandleOnCancelledper riportarlo aIdle. Per aggiornareNavigationEventInfo, utilizzaNavigationEventCallback.setInfo. (I93dca, b/424470518) - Sono stati aggiunti parametri predefiniti a
NavigationEventper consentire un'istanza più semplice e semplificare i test, che devono essere utilizzati al posto diTestNavigationEvent. (I5dc49, I232f4) - È stato aggiunto un
TestNavigationEventCallbackper testare gli eventi di navigazione con stati attuali/precedenti specifici. (Idd22e, b/424470518) NavigationEventInputHandlerè stata trasformata in una classe astratta per sostituire la precedenteAbstractNavigationEventInputHandlercon un'implementazione inDirectNavigationEventInputHandler(Iadde5, Ifed40I3897c, b/432616296, b/435416924)- I prefissi delle funzioni
send*inNavigationEventInputHandlersono stati rinominati inhandle*. (Iffcaf) OnBackInvokedInputHandlerora estende il nuovoabstractNavigationInputHandler. (Ib45aa)- È stato modificato
NavigationEventDispatcherOwnerin modo da richiedere un dispatcher principale in cui devi passare esplicitamentenullper creare un dispatcher radice. (Ia6f64, b/431534103)
Correzioni di bug
- Maggiore efficienza evitando le copie delle raccolte in
NavigationEventDispatcher.dispose(). (I4ab09) - Risolto un problema per cui
NavigationEventHandlernon rispondeva correttamente alle modifiche del suo stato di attivazione. (Ia5268,I19bec, I5be5c, b/431534103)
Aggiornamenti di Documenti
- KDocs per
NavigationEventè stato ampliato per chiarire il suo ruolo di wrapper di eventi unificato e il comportamento dettagliato delle proprietà nei diversi tipi di navigazione (gesti, clic). (I91e8d) - È stata aggiornata la documentazione per la gestione del pulsante Indietro di sistema delle API Compose (
BackHandler,PredictiveBackHandler,NavigationEventHandler) per descrivere il comportamento in modo specifico in relazione all'ordine di callback. (I7ab94, )
Aggiornamento delle dipendenze
NavigationEventora dipende da Compose Runtime 1.9.0-beta03, che consente all'artefattonavigationevent-composedi supportare tutti i target KMP. (Ia1b87)
Versione 1.0.0-alpha05
30 luglio 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha05 è stato rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
Supporto della gerarchia padre-figlio:
Un NavigationEventDispatcher ora può avere dispatcher principali e secondari, formando una struttura ad albero gerarchica. In questo modo, gli eventi di navigazione possono propagarsi ed essere gestiti in modo più flessibile nei componenti UI complessi di Compose, riflettendo la gerarchia strutturale della UI tramite dispatcher concatenati. (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 proprietà gerarchica isEnabled consente il controllo dall'alto verso il basso di un dispatcher. Quando isEnabled è impostato su false in un dispatcher, tutti i dispatcher secondari vengono disattivati automaticamente. Questa funzionalità consente di disattivare in modo efficiente interi rami del sistema di eventi di navigazione. (I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
Inoltre, la proprietà isEnabled su NavigationEventCallback ora rispetta lo stato di attivazione del dispatcher associato. Ciò significa che un callback viene considerato abilitato solo se sono abilitati sia il callback stesso sia il relativo dispatcher (inclusi i relativi antenati), garantendo un controllo gerarchico coerente sull'attivazione del callback. (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()
È stato introdotto un nuovo metodo dispose() per la pulizia corretta dei dispatcher e dei relativi figli. La chiamata dispose() interrompe gli ascoltatori per evitare perdite di memoria, elimina in modo ricorsivo tutti i dispatcher secondari, rimuove tutti i callback registrati nel dispatcher e lo scollega dal relativo elemento principale. In questo modo, le risorse vengono rilasciate correttamente quando i dispatcher non sono più necessari. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
Se viene chiamato un metodo pubblico su un dispatcher eliminato, viene generata immediatamente un'eccezione IllegalStateException. In questo modo si evitano errori silenziosi e gli sviluppatori possono identificare un utilizzo improprio durante lo sviluppo. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
Nota:introdurremo un nuovo NavigationEventDispatcherOwner composable che gestisce automaticamente un dispatcher secondario all'interno della UI di Compose in aosp/3692572. Tuttavia, questa modifica non è stata inclusa nella release attuale ed è prevista per la prossima.
Libreria di test di navigazione
- Aggiungi il modulo
navigationevent-testingper fornire utilità di test dedicate per la librerianavigationevent. (0e50b6) - Aggiungi la classe di utilità fittizia
TestNavigationEventCallbackper i test. Registra le chiamate del metodo di callback e memorizza gli elementiNavigationEventricevuti per supportare la verifica. (4a0246) - Aggiungi la funzione di utilità fittizia
TestNavigationEventper creare istanzeNavigationEventcon valori predefiniti, semplificando i test unitari per l'elaborazione degli eventi di navigazione. (3b63f5) - Aggiungi la classe di utilità fittizia
TestNavigationEventDispatcherOwnerper i test. Monitora i conteggi degli eventi di fallback e di modifica dello stato abilitato per supportare la verifica dell'interazione nei test. (c8753e)
Modifiche alle API
- Sposta
NavigationEventInputHandlerdaandroidMainacommonMainper renderlo disponibile nel codice comune KMP. Aggiungi nuovi metodipublic send*per l'invio degli eventi. Modifica le funzioni di distribuzione suNavigationEventDispatcherdapublicainternal; ora gli utenti devono utilizzareNavigationEventInputHandlerper inviare eventi. (Ia7114) - Rinomina
NavigationInputHandlerinOnBackInvokedInputHandler. (I63405)
Correzioni di bug
- Refactor
NavigationEventDispatcherper ridurre l'overhead evitando allocazioni di elenchi intermedi e migliorando le prestazioni di distribuzione dei callback. (I82702, I1a9d9) - Aggiungi annotazioni
@FloatRangeai campitouchX,touchYeprogressinNavigationEventper applicare intervalli di valori validi in fase di compilazione e migliorare la sicurezza dell'API. (Iac0ec)
Versione 1.0.0-alpha04
2 luglio 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha04 è stato rilasciato. La versione 1.0.0-alpha04 contiene questi commit.
Correzioni di bug
- Utilizzato
implementedInJetBrainsForkpernavigationevent-composee aggiunto un targetcommonStubsper rispettare le convenzioni di Compose. Modifica richiesta da JetBrains. (f60c79) - È stata corretta l'applicazione del plug-in del compilatore Compose per Kotlin/Native per garantire la corretta generazione di stub. Nessun impatto sulle API pubbliche o sul comportamento. (1890c9)
Versione 1.0.0-alpha03
18 giugno 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03 è stato rilasciato. La versione 1.0.0-alpha03 contiene questi commit.
Nuove funzionalità
- È stato introdotto un nuovo modulo
navigationevent-composeper supportare le funzionalità di Jetpack Compose nella librerianavigationevent. (980d78) NavigationEventCompose ha aggiunto una nuova composizione localeLocalNavigationEventDispatcherOwner. Restituisce un valore Nullable per determinare meglio se è disponibile nella composizione corrente.NavigationEventHandlerora genererà un errore se il proprietario sottostante non viene trovato. (62ffda)NavigationEventCompose ha aggiunto un nuovoNavigationEventHandlercomposable per gestire gli eventi (gesto Indietro predittivo). Fornisce unFlowdiNavigationEventoggetti che devono essere raccolti nella lambda di sospensione che fornisci 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
}
}
Modifiche alle API
- Ogni
NavigationEventCallbackora può essere registrato con un soloNavigationEventDispatcheralla volta; l'aggiunta a più dispatcher genera unIllegalStateException. Tieni presente che questo comportamento è diverso daOnBackPressedDispatcher, che consente più dispatcher. (e82c19) - È stato creato
isPassThroughunvalper impedire la mutazione durante la navigazione, che potrebbe interrompere l'invio diNavigationEvent. (I0b287)
Versione 1.0.0-alpha02
4 giugno 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha02 è stato rilasciato. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- Sostituisci il costruttore secondario di
NavigationEventDispatchercon gli argomenti predefiniti. (I716a0) - Rimuovi la proprietà prioritaria da
NavigationEventCallback. Trasferisci la priorità aNavigationEventDispatcher.addCallback(). (I13cae)
Correzioni di bug
- È stato corretto un
ConcurrentModificationExceptionche poteva verificarsi quando veniva chiamatoNavigationEventCallback.remove()a causa della modifica simultanea dell'elenco interno degli elementi chiudibili. (b/420919815)
Versione 1.0.0-alpha01
20 maggio 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha01 è stato rilasciato. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
- La libreria
androidx.navigationeventfornisce un'API KMP-first per la gestione del pulsante Indietro del sistema e di Predictive Back.NavigationEventDispatcherfunge da API comuni per registrare una o più istanze diNavigationEventCallbackper la ricezione di eventi di sistema indietro. - Questo livello si trova sotto le API rilasciate in precedenza in
androidx.activitye mira a essere un sostituto meno soggettivo per l'utilizzo delle API Activity nei componenti di livello superiore o per l'utilizzo diretto delle API del framework AndroidOnBackInvokedDispatcher. Le APIandroidx.activitysono state riscritte in base alle API Navigation Event nell'ambito di Activity 1.12.0-alpha01.