navigationevent
| Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| 24 September 2025 | - | - | - | 1.0.0-alpha09 |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada navigationevent, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-alpha09" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-alpha09") }
Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Tidak ada catatan rilis untuk artefak ini.
Versi 1.0
Versi 1.0.0-alpha09
24 September 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha09 dirilis. Versi 1.0.0-alpha09 berisi commit ini.
Perubahan API
- Gunakan objek singleton
NavigationEventTransitionState.Idlesecara langsung, bukan membuat instanceIdle(). (Ic7d9e, b/444734264) - Jadikan konstruktor praktis internal; dapatkan instance melalui
NavigationEventDispatcher.historypublik, bukan konstruksi langsung. (I3b7e0, b/444734264) - Memerlukan pembuatan
NavigationEventStatemelaluirememberNavigationEventState; konstruktor sekarang bersifat internal. (Ie143c, b/444734264) - Menggunakan
onBackCompletedFallbackuntuk menggantikan penggunaanfallbackOnBackPresseddan parameter konstruktor. Perilaku tidak berubah; dipanggil hanya pada peristiwa kembali yang tidak ditangani dan selesai. (Idabe9, b/444734264) - Konstruktor utama
NavigationEventHistory(mergedHistory, currentIndex)kini adalahinternal. Konsumen eksternal harus menggunakan konstruktor publik (baik konstruktor kosong maupun konstruktor berbasis partisi) untuk membuat instance. (I1c047, b/444734264) - Membuat
View.setViewTreeNavigationEventDispatcherOwnermenerima pemilik nullable (Ic9eb6, b/444436762) NavigationEventInfosekarang menjadiabstract class, bukaninterface. Perbarui semua implementasi kustom untuk diwarisi dari class (misalnya,data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)- Properti
NavigationEventDispatcher.statedan fungsigetState<T>()lama telah dihapus. Gunakan alurdispatcher.transitionState(untuk progres gestur) dandispatcher.history(untuk stack navigasi) baru yang terpisah. (Ic2ceb, b/444734264) - Callback
NavigationEventInput.onInfoChanged(...)diganti. Terapkan callbackonHistoryChanged(history: NavigationEventHistory)baru untuk menerima update sebagai satu objekNavigationEventHistory. (I23e0b, b/444734264) - Memperkenalkan
NavigationEventDispatcher.historyStateFlowglobal baru. Alur non-generik ini memungkinkan pengamat berlangganan hanya untuk perubahan pada stack navigasi dan tetap stabil selama progres gestur. Ini adalah bagian yang berlawanan dengantransitionState. (I1db10, b/444734264) - Memperkenalkan
NavigationEventDispatcher.transitionStateStateFlowglobal baru. Alur non-generik ini memungkinkan pengamat berlangganan hanya ke status gestur fisik (Idle/InProgress), terpisah dari histori. (I171fa, b/444734264) - Memperkenalkan class
NavigationEventHistoryState. API ini akan berfungsi sebagai API inti untuk mengamati histori informasi navigasi, terpisah dari status gestur. (I81ca5, b/444734264) NavigationEventkini ditandai sebagai@Immutable, sehingga Compose Compiler dapat mengoptimalkan rekomposisi. (If78c7, b/444734264)- API handler
navigationevent-composetelah diupdate.NavigationEventHandlerdanNavigationBackHandler(serta variannya) kini mendukung penggantian baru yang menerimaNavigationEventStateyang diangkat. Overload sederhana (mengambilcurrentInfo) dipertahankan dan kini menggunakan model status baru ini secara internal. (Ic3251, b/444734264) - Tambahkan penampung status
@StableNavigationEventState<T>baru ke librarynavigationevent-compose. Objek ini menggabungkan histori lokal dengan status gestur lokal dan akan menjadi link utama antararememberNavigationEventStatedanNavigationEventHandler. (Ifb69f, b/444734264) - Menambahkan properti
transitionState: TransitionStatehanya baca dan publik baru keNavigationEventHandler. Handler kini mempertahankan status transisinya sendiri, yang dapat diamati oleh sistem eksternal. (I9acd2, b/444734264) - Memperkenalkan kelas tertutup
TransitionStatebaru. API ini akan berfungsi sebagai API inti untuk mengamati status gestur, terpisah dari histori navigasi. (Id4beb, b/444734264) - Tampilkan
currentInfo,backInfo, danforwardInfosebagai properti hanya baca publik diNavigationEventHandler. (Ia7636, b/444734264) - Penerapan
NavigationEventHandlerkini harus memberikan nilaiinitialInfo: Tke konstruktor dasar. (Idcfea, b/444734264) - Ganti
OnBackInvokedInputdenganOnBackInvokedOverlayInputatauOnBackInvokedDefaultInput. (I5323f, b/428948766) - Tandai
NavigationEventStatesebagai@Immutable. Hal ini meningkatkan performa Compose dengan memastikan Composable yang mengamati status ini dapat melewati rekomposisi dengan benar. (I399c8) - Ganti nama
NavigationEventInfo.NotProvidedmenjadiNavigationEventInfo.None;dan perbarui referensi. Tidak ada perubahan perilaku. (I5e2d4) NavigationEventInfokini ditandai sebagai@Immutable, sehingga Compose Compiler dapat mengoptimalkan rekomposisi. (I7c112)- Meningkatkan ergonomi Java dengan antarmuka yang menyenangkan untuk penggantian penyelesaian kembali. (I8a860)
- Mengganti nama
onHasEnabledHandlerChangedmenjadionHasEnabledHandlersChanged. Hal ini memperjelas bahwa callback melaporkan status pengaktifan kolektif semua handler, bukan hanya satu. (I1af61, b/443711297) - Menghapus
hasEnabledHandler()dariNavigationEventDispatcher;, gunakanNavigationEventInput.onHasEnabledHandlersChangedsebagai gantinya. (Idef72, b/443711297) - Menambahkan callback
onInfoChangedkeNavigationEventInputuntuk memberi tahu pemroses tentang perubahan pada histori navigasi. Hal ini memberikan konteks lengkap dari stack saat ini, kembali, dan maju, sehingga memungkinkan Input bereaksi terhadap informasi kontekstual. (I69a8b, b/443282983) - Jadikan
swipeEdgeNavigationEventsebagai@IntDef(Icee54, b/443950342) - Tambahkan parameter
prioritykeNavigationEventDispatcher.addInputuntuk mencakup pengiriman ke satu prioritas; peristiwa sepertionHasEnabledCallbacksChangedsekarang hanya dipicu saat callback pada prioritas tersebut berubah. (I3e488, b/443711297) - Mengganti nama parameter
NavigationEventDispatcherdariparentDispatchermenjadi induk agar lebih jelas. (Id4f1f, b/443801782) - Menghapus
NavigationEventPrioritydan menggantinya dengan@IntDefuntuk pengguna Java (I10a9f, b/440514265) - Menerapkan kontrak handler navigasi. Jika
NavigationEventHandlerAnda menyetelisBackEnabledatauisForwardEnabledketrue, Anda kini harus menggantionBackCompletedatauonForwardCompleted. Implementasi default kini menampilkan pengecualian untuk mencegah kegagalan tanpa pemberitahuan. (I17c62) - Menerapkan nilai prioritas yang valid saat menambahkan pengendali peristiwa navigasi. Memanggil
addHandlerdengan prioritas yang tidak didukung kini akan menampilkanIllegalArgumentException, sehingga memberikan masukan langsung untuk penggunaan yang salah di semua platform target. (I3c474)
Perbaikan Bug
- Jadikan
addHandleridempoten; abaikan pendaftaran duplikat. (I052aa, b/444734264) - Menjaga properti
NavigationEventStatetetap tersinkron selama rekomposisi. (Ib3b4d, b/444734264) - Pastikan
NavigationEventInputsmenerima info kontekstual saat ini (kembali, maju, saat ini) segera setelah pendaftaran. (Ie65bf, b/443282983)
Versi 1.0.0-alpha08
10 September 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit ini.
Fitur Baru
- Memperkenalkan API
NavigationEventHandlerberbasis lambda yang menggantikan handler berbasis Flow. Tangani gestur kembali dan maju dengan callback sederhana, bukan mengumpulkan alur, sehingga mengurangi boilerplate dan menghindari masalah pembatalan. MenyediakanNavigationBackHandlerdanNavigationForwardHandlersebagai API kemudahan yang ditargetkan. HapusNavigationEventHandlerberbasis Flow; bermigrasi ke callback baru. (I23bac, b/436248277) - Mengizinkan pendengar pasif mengakses tumpukan kembali navigasi penuh melalui info kembali gabungan. Mengizinkan UI merender pratinjau dan histori navigasi bertingkat, bukan hanya terbatas pada callback paling atas. (I7a510, b/436248277)
- Memperkenalkan model kembali/saat ini/maju yang eksplisit untuk mengklarifikasi status navigasi dan mendukung navigasi maju dengan handler bertingkat. (Ib86da, b/420443609)
- Tambahkan metode
onForward*danisForwardEnabledkeNavigationEventCallback. (Ic100f, b/436248290) - Menambahkan dukungan navigasi maju ke
NavigationEventInput. (I5734b)
Perubahan API
- Aktifkan pengujian peristiwa navigasi maju dengan
TestNavigationEventCallback. Gunakan hookisForwardEnableddanonForward*. (I21fb5, b/420443609) - Ganti nama callback
onEvent*menjadionBack*diNavEvent. (I228b3, b/436248290) - Mengonversi
SwipeEdgemenjadi class inline. (Id5e01) - Membuat library
navigationeventdapat dioperasikan dengan Java. Semua API publik kini dapat diakses sepenuhnya dari kode Java, sehingga memungkinkan integrasi yang lancar ke dalam project bahasa campuran atau khusus Java. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294) - Memperjelas peran API dengan mengganti nama
NavigationEventCallbackmenjadiNavigationEventHandler. Perubahan ini lebih mencerminkan tujuan class untuk menangani gestur navigasi multi-tahap. MetodeaddCallbackyang sesuai kini adalahaddHandler. (I2492a, b/443040331)
Perbaikan Bug
- Mencegah penggantian kembali berjalan pada navigasi maju. (I74814, b/436248290)
- Menambahkan dukungan untuk navigasi maju prediktif. API
NavigationEventkini menangani gestur kembali dan maju, sehingga memungkinkan animasi yang konsisten untuk kedua arah navigasi. (Idc98c, b/436248290) - Mencegah error
IllegalStateExceptionselama rekomposisi saatNavigationEventDispatcherOwnerturunan dihapus. (Iff50c, b/412629020) - Pendengar pasif kini dapat mengakses seluruh tumpukan kembali navigasi melalui info kembali gabungan, sehingga UI dapat merender pratinjau dan histori navigasi bertingkat, bukan hanya terbatas pada callback paling atas. (I7a510, b/436248277)
Versi 1.0.0-alpha07
27 Agustus 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit ini.
Perubahan API
- Menghapus
NavigationEventDispatcher.onHasEnabledCallbacksChanged. (I50e97) - Membuat
NavigationEventCallback.onEventCompleted()abstrak. (I36b38) - Ubah metode
NavigationEventCallback#on*menjadiprotected. Perbarui kode panggilan untuk menggantinya. (I6b691) - Mengganti nama fungsi
DirectNavigationEventInput. (Iffb62) - Mengganti nama
NavigationEventInput.onAttachmenjadionAdded. (I2d0b8) - Mengganti nama
NavigationEventInput.onDetachmenjadionRemoved. (I2d0b8) - Mengganti nama
NavigationEventInputHandlermenjadiNavigationEventInput. (I676a4) - Menambahkan
@EmptySuperkeNavigationEventInput.onHasEnabledCallbacksChanged. (If9853) - Terapkan
onAttachdiNavigationEventInputHandler. (I03648) - Terapkan
onDetachdiNavigationEventInputHandler. (I03648) - Setelan default
NavigationEventCallbackadalah diaktifkan saat pembuatan. (Ic0188) - Mengganti
NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackdenganNavigationEventInput.onHasEnabledCallbacksChanged. (I64e93) - Memerlukan thread utama untuk
NavigationEventDispatcher.addInput. (Ic2930) - Memerlukan thread utama untuk
NavigationEventDispatcher.removeInput. (Ic2930) - Menghapus
Dispatcher.addOnHasEnabledCallbacksChangedCallback. Mengganti denganDispatcher.onHasEnabledCallbacksChanged. (Ida3e3, b/436530096)
Perbaikan Bug
- Memperbaiki bug saat menambahkan handler yang sudah terlampir atau menghapus handler yang tidak terlampir memicu logika siklus proses yang salah. (I9e47b)
Versi 1.0.0-alpha06
13 Agustus 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit ini.
Fitur Baru
Passive Listeners API
Anda kini dapat meneruskan informasi kontekstual kustom dari host navigasi mana pun dan secara pasif memproses perubahan status gestur dari mana saja di UI Anda. Hal ini memungkinkan animasi yang sesuai konteks untuk kembali prediktif dan navigasi berbasis gestur lainnya.
Fitur ini memiliki dua bagian:
- Memberikan Info - Gunakan
NavigationEventInfountuk membawa data kustom. - Menggunakan Status - Gunakan
dispatcher.state(NavigationEventState) untuk mengamati progres dan konteks gestur.
NavigationEventCallbackkini mengekspos metodesetInfo(currentInfo, previousInfo)untuk menyetel konteks gestur dalam satu panggilan (I1d5e7, b/424470518).NavigationEventHandlermenambahkan kelebihan beban baru yang menerimacurrentInfodanpreviousInfo, sehingga menjadikannya API utama untuk menyediakan konteks di aplikasi Compose (I6ecd3, b/424470518).
Contoh:
data class MyScreenInfo(val screenName: String) : NavigationEventInfo
NavigationEventHandler(
enabled = true,
currentInfo = MyScreenInfo("Details Screen"),
previousInfo = MyScreenInfo("Home Screen")
) { /* Handle back completion */ }
NavigationEventDispatcherkini mengeksposdispatcher.statedandispatcher.getState<T>()(If7fae, Ia90ca, b/424470518). API berbasisStateFlowini memungkinkan UI mengamati progres gestur dan data kontekstual tanpa menangani peristiwa secara langsung.
Contoh:
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 */ }
}
Menambahkan properti
progresskeNavigationEventState(I7b196) yang menampilkanlatestEvent.progresssaat sedang berlangsung, atau0Fjika tidak:val progress = state.progressTambahkan composable
NavigationEventDispatcherOwneruntuk membuat, menautkan, dan menghapus instanceNavigationEventDispatchersecara hierarkis. Aktifkan kontrol dinamis status aktif dispatcher dan pembersihan otomatis.@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
Perubahan API
- Parameter
isPassthroughtelah dihapus dariNavigationEventCallback. (I99028, b/424470518) - Konstruktor
NavigationEventStatekini bersifat internal. Untuk pengujian, perbarui status (defaultnyaIdle) melaluiDirectNavigationEventInputHandler. PanggilhandleOnStartedatauhandleOnProgresseduntuk menyetel status keInProgress, danhandleOnCompletedatauhandleOnCancelleduntuk mengembalikannya keIdle. Untuk mengupdateNavigationEventInfo, gunakanNavigationEventCallback.setInfo. (I93dca, b/424470518) - Menambahkan parameter default ke
NavigationEventuntuk mempermudah instansiasi dan menyederhanakan pengujian yang harus digunakan sebagai penggantiTestNavigationEvent. (I5dc49, I232f4) - Menambahkan
TestNavigationEventCallbackuntuk menguji peristiwa navigasi dengan status saat ini/sebelumnya tertentu. (Idd22e, b/424470518) NavigationEventInputHandlertelah dijadikan class abstrak untuk menggantikanAbstractNavigationEventInputHandlersebelumnya dengan implementasi diDirectNavigationEventInputHandler(Iadde5, Ifed40I3897c, b/432616296, b/435416924)- Fungsi
send*diNavigationEventInputHandlertelah diganti nama awalan menjadihandle*. (Iffcaf) OnBackInvokedInputHandlersekarang memperluasNavigationInputHandlerabstractyang baru. (Ib45aa)- Mengubah
NavigationEventDispatcherOwneruntuk mewajibkan dispatcher induk tempat Anda harus meneruskannullsecara eksplisit untuk membuat dispatcher root. (Ia6f64, b/431534103)
Perbaikan Bug
- Meningkatkan efisiensi dengan menghindari salinan koleksi di
NavigationEventDispatcher.dispose(). (I4ab09) - Memperbaiki masalah saat
NavigationEventHandlertidak merespons dengan benar perubahan pada status aktifnya. (Ia5268,I19bec, I5be5c, b/431534103)
Info Terbaru Dokumen
- KDocs untuk
NavigationEventdiperluas untuk mengklarifikasi perannya sebagai wrapper peristiwa terpadu dan perilaku properti detail di berbagai jenis navigasi (gestur, klik). (I91e8d) - Memperbarui dokumentasi untuk API penanganan kembali sistem Compose (
BackHandler,PredictiveBackHandler,NavigationEventHandler) untuk menjelaskan perilaku secara khusus terkait urutan callback. (I7ab94, )
Pembaruan Dependensi
NavigationEventkini bergantung pada Compose Runtime 1.9.0-beta03 yang memungkinkan artefaknavigationevent-composemendukung semua target KMP. (Ia1b87)
Versi 1.0.0-alpha05
30 Juli 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Dukungan Hierarki Induk-Turunan:
NavigationEventDispatcher kini dapat memiliki dispatcher induk dan turunan, yang membentuk struktur pohon hierarkis. Hal ini memungkinkan peristiwa navigasi dipropagasi dan dikelola secara lebih fleksibel di seluruh komponen UI Compose yang kompleks dengan mencerminkan hierarki struktural UI melalui dispatcher berantai. (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)
Properti isEnabled hierarkis memungkinkan kontrol dispatcher dari atas ke bawah. Jika isEnabled disetel ke false pada dispatcher, semua dispatcher turunannya akan otomatis dinonaktifkan. Fitur ini memungkinkan seluruh cabang sistem peristiwa navigasi dinonaktifkan secara efisien. (I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
Selain itu, properti isEnabled di NavigationEventCallback kini mematuhi status aktif dispatcher terkait. Ini berarti callback dianggap diaktifkan hanya jika callback itu sendiri dan dispatchernya (termasuk ancestor-nya) diaktifkan, sehingga memastikan kontrol hierarkis yang konsisten atas aktivasi 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()
Metode dispose() baru telah diperkenalkan untuk pembersihan yang tepat pada dispatcher dan turunannya. Memanggil dispose() akan menghentikan pemroses untuk mencegah kebocoran memori, membuang semua dispatcher turunan secara rekursif, menghapus semua callback yang terdaftar ke dispatcher, dan membatalkan tautannya dari induknya. Hal ini menjamin resource dilepaskan dengan benar saat dispatcher tidak lagi diperlukan. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
Jika ada metode publik yang dipanggil pada dispatcher yang di-dispose, IllegalStateException akan segera ditampilkan. Hal ini mencegah kegagalan tanpa pemberitahuan dan membantu developer mengidentifikasi penggunaan yang tidak tepat selama pengembangan. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
Catatan: Kami akan memperkenalkan Composable NavigationEventDispatcherOwner baru yang otomatis mengelola dispatcher turunan dalam UI Compose di aosp/3692572. Namun, perubahan ini tidak masuk dalam rilis saat ini dan direncanakan untuk rilis berikutnya.
Navigation Testing Library
- Menambahkan modul
navigationevent-testinguntuk menyediakan utilitas pengujian khusus untuk librarynavigationevent. (0e50b6) - Menambahkan class utilitas palsu
TestNavigationEventCallbackuntuk pengujian. Objek ini mencatat panggilan metode callback dan menyimpan itemNavigationEventyang diterima untuk mendukung verifikasi. (4a0246) - Tambahkan fungsi utilitas tiruan
TestNavigationEventuntuk membuat instanceNavigationEventdengan nilai default, sehingga menyederhanakan pengujian unit untuk pemrosesan peristiwa navigasi. (3b63f5) - Menambahkan class utilitas palsu
TestNavigationEventDispatcherOwneruntuk pengujian. Ini melacak jumlah peristiwa penggantian dan perubahan status yang diaktifkan untuk mendukung verifikasi interaksi dalam pengujian. (c8753e)
Perubahan API
- Pindahkan
NavigationEventInputHandlerdariandroidMainkecommonMainagar tersedia di kode umum KMP. Menambahkan metodepublic send*baru untuk mengirimkan peristiwa. Ubah fungsi pengiriman diNavigationEventDispatcherdaripublicmenjadiinternal; pengguna kini harus menggunakanNavigationEventInputHandleruntuk mengirim peristiwa. (Ia7114) - Mengganti nama
NavigationInputHandlermenjadiOnBackInvokedInputHandler. (I63405)
Perbaikan Bug
- Memfaktorkan ulang
NavigationEventDispatcheruntuk mengurangi overhead dengan menghindari alokasi daftar perantara dan meningkatkan performa pengiriman callback. (I82702, I1a9d9) - Menambahkan anotasi
@FloatRangeke kolomtouchX,touchY, danprogressdiNavigationEventuntuk menerapkan rentang nilai yang valid pada waktu kompilasi dan meningkatkan keamanan API. (Iac0ec)
Versi 1.0.0-alpha04
2 Juli 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.
Perbaikan Bug
- Menggunakan
implementedInJetBrainsForkuntuknavigationevent-composedan menambahkan targetcommonStubsagar sesuai dengan konvensi Compose. Perubahan yang diminta oleh JetBrains. (f60c79) - Memperbaiki penerapan plugin compiler Compose untuk Kotlin/Native guna memastikan pembuatan stub yang benar. Tidak ada dampak pada API atau perilaku publik. (1890c9)
Versi 1.0.0-alpha03
18 Juni 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.
Fitur Baru
- Memperkenalkan modul
navigationevent-composebaru untuk mendukung fitur Jetpack Compose di librarynavigationevent. (980d78) NavigationEventCompose telah menambahkan komposisi lokalLocalNavigationEventDispatcherOwnerbaru. Metode ini menampilkan nilai nullable untuk menentukan secara lebih baik apakah nilai tersebut tersedia dalam komposisi saat ini.NavigationEventHandlerkini akan menampilkan error jika pemilik dasar tidak ditemukan. (62ffda)- Compose
NavigationEventtelah menambahkan ComposableNavigationEventHandlerbaru untuk menangani peristiwa (gestur kembali prediktif). Fungsi ini menyediakanFlowobjekNavigationEventyang harus dikumpulkan dalam lambda penangguhan yang Anda berikan 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
}
}
Perubahan API
- Setiap
NavigationEventCallbackkini hanya dapat didaftarkan dengan satuNavigationEventDispatcherdalam satu waktu; menambahkannya ke beberapa pengirim akan memunculkanIllegalStateException. Perhatikan bahwa perilaku ini berbeda denganOnBackPressedDispatcher, yang memungkinkan beberapa dispatcher. (e82c19) - Menjadikan
isPassThroughsebagaivaluntuk mencegah mutasi selama navigasi, yang dapat merusak pengirimanNavigationEvent. (I0b287)
Versi 1.0.0-alpha02
4 Juni 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.
Perubahan API
- Ganti konstruktor sekunder
NavigationEventDispatcherdengan argumen default. (I716a0) - Hapus properti prioritas dari
NavigationEventCallback. Teruskan prioritas keNavigationEventDispatcher.addCallback()sebagai gantinya. (I13cae)
Perbaikan Bug
- Memperbaiki
ConcurrentModificationExceptionyang dapat terjadi saatNavigationEventCallback.remove()dipanggil karena secara bersamaan mengubah daftar internal objek yang dapat ditutup. (b/420919815)
Versi 1.0.0-alpha01
20 Mei 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit ini.
Fitur Baru
- Library
androidx.navigationeventmenyediakan API yang mengutamakan KMP untuk menangani kembali sistem serta Kembali Prediktif.NavigationEventDispatcherberfungsi sebagai API umum untuk mendaftarkan satu atau beberapa instanceNavigationEventCallbackuntuk menerima peristiwa kembali sistem. - Lapisan ini berada di bawah API yang dirilis sebelumnya di
androidx.activitydan bertujuan untuk menjadi pengganti yang lebih tidak berpihak untuk menggunakan API Aktivitas di komponen tingkat yang lebih tinggi atau langsung menggunakan APIOnBackInvokedDispatcherframework Android. APIandroidx.activitytelah ditulis ulang di atas Navigation Event API sebagai bagian dari Activity 1.12.0-alpha01.