navigation3
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
8 Oktober 2025 | - | - | - | 1.0.0-alpha11 |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada navigation3, 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.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") }
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-alpha11
8 Oktober 2025
androidx.navigation3:navigation3-*:1.0.0-alpha11
dirilis. Versi 1.0.0-alpha11 berisi commit ini.
Perubahan API
- Metode
calculateScene
padaSceneStrategy
tidak lagi@Composable
. Sebagai gantinya, pertimbangkan untuk memindahkan pekerjaan ini ke konstruksi metodeSceneStrategy
(yaitu, dalam metoderememberMySceneStrategy()
) yang sepenuhnya memungkinkan Anda menentukan masa aktif nilairememberSaveable
atau pernyataanremember
utama dari nilai yang benar. (If1733, b/448709506) - Parameter
onBack
untukSceneStrategy.calculateScene
telah dipindahkan ke cakupan penerima baruSceneStrategyScope
untuk memperjelas bahwa ini adalah parameter opsional dan menyediakan titik ekstensi untuk fitur Navigation3 mendatang. (I3aea3, b/448460407) - Lambda
onBack
yang diteruskan keNavDisplay
dan keSceneStrategy
Anda tidak lagi menyediakan parametercount: Int
untuk menunjukkan kapan beberapa entri harus dikeluarkan. Sebagai gantinya, lambda() -> Unit
kini akan dipanggil beberapa kali berturut-turut dalam kasus langka saat Scene Anda meminta beberapa entri muncul. (Idedb5, b/446989346) - Hapus class
NavEntryWrapper
dan ganti fungsinya dengan classNavEntry
akhir dengan konstruktor sekunder baru yang menggunakanNavEntry
dengan konten baru. Hal ini akan memungkinkan dukungan berkelanjutan untuk membungkus entri dengan konten baru. (I7da2a, b/444447130) - Fungsi
navEntryDecorator
yang membuat dan menampilkanNavEntryDecorator
telah dihapus dan diganti dengan classNavEntryDecorator
yang kini dibuat publik dan terbuka untuk sub-classing. (If81f8, b/444447434, b/447381176) SavedStateNavEntryDecorator
diganti namanya menjadiSaveableStateHolderNavEntryDecorator
karena menghiasi entri denganSaveableStateHolder
. Dekorator juga telah difaktorkan ulang dari fungsi menjadi class karena secara fungsional merupakan factory untukNavEntryDecorator
. (Ie6013, b/447381176)- Tampilan kustom yang menggunakan
SceneState
sebagai alternatif untuk menggunakanNavDisplay
tidak lagi diwajibkan untuk menggunakan komposisi lokalLocalEntriesToRenderInCurrentScene
, yang kini bersifat internal. (Ic40ef, b/414668196) - Menghapus
SceneSetupNavEntryDecorator
danrememberSceneSetupNavEntryDecorator()
dari tampilan API publik. Fungsi ini kini disertakan secara default tanpa mengharuskan Anda menyertakannya secara manual. (Ieae42, b/444479133) NavEntry
,DialogScene
,SinglePaneScene
, danSceneState
kini mengimplementasikan equals. (I96121)- Antarmuka adegan memiliki kolom metadata baru untuk melampirkan metadata khusus adegan untuk NavDisplay. Hal ini memungkinkan Scene mengganti metadata pada
NavDisplay
, misalnya dengan transisi. (I1fd96, b/443955625) - Sederhanakan tanda tangan
rememberNavBackStack
dengan menghapus parameter jenis generik yang berlebihan. Fungsi ini kini menerimavararg elements: NavKey
. (I03e45) - Animasi default untuk
NavDisplay
kini menjadi bagian dari API umum yang memungkinkan animasi tersebut dipanggil dari semua platform. (I71af9, b/447147159) - Ganti nama
EntryProviderBuilder
menjadiEntryProviderScope
untuk mencerminkan secara akurat bahwa class tersebut adalah DSL Kotlin yang menyediakan cakupan untuk membangunNavEntries
. (Ia7465)
Perbaikan Bug
rememberNavBackStack()
kini menerapkan serialisasi polimorfik untuk NavKey dan memerlukanSavedStateConfiguration
kustom yang dikonfigurasi untuk memastikan pemulihan status yang benar. KDoc telah diperbarui untuk mencerminkan persyaratan bahwa semua subjenis NavKey harus didaftarkan di SerializersModule yang disediakan. (I6de37,I782f2, b/446664383)
Versi 1.0.0-alpha10
24 September 2025
androidx.navigation3:navigation3-*:1.0.0-alpha10
dirilis. Versi 1.0.0-alpha10 berisi commit ini.
Perubahan API
- Menambahkan overload
NavDisplay
baru yang menggunakan daftarNavEntry<T>
yang telah dihiasi olehrememberDecoratedNavEntries
. (I4025b, b/441940314) - Memindahkan
DialogScene
ke paket baru. (Ia5840) - Menghapus API publik
DecorateNavEntry
. Sebagai gantinya, gunakanrememberDecoratedNavEntries
untuk membungkus NavEntry dengan daftar dekorator. (Id8c09) - UI Navigation3 kini menyediakan properti
transitionSpec
default baru. (Ibcabd) - Menambahkan objek
SceneState
baru untuk membantu mengelola adegan. Hal ini juga menyediakan overloadNavDisplay
baru yang menggunakanSceneState
danNavigationEventState
. (Idfb46, b/444479133) NavDisplay
kini memungkinkan Anda menyesuaikan transisi berdasarkan tujuan dan asalScene
dengan melihatcurrentState
dantargetState
Transition
. (I906cc, b/443872322)NavigationEventInfo
sekarang menjadiabstract class
, bukaninterface
. Perbarui semua implementasi kustom untuk mewarisi dari class (misalnya,data class MyInfo : NavigationEventInfo()
). (I1e59c, b/444734264)- API handler
navigationevent-compose
telah diupdate.NavigationEventHandler
danNavigationBackHandler
(serta variannya) kini mendukung penggantian baru yang menerimaNavigationEventState
yang diangkat. Overload sederhana (mengambilcurrentInfo
) dipertahankan dan kini menggunakan model status baru ini secara internal. (Ic3251, b/444734264) - Semua Scene API telah dipindahkan dari navigation3-ui ke navigation3-runtime. Artinya, kini tersedia di semua platform yang didukung oleh navigation3-runtime. (I431d0, b/444449993)
- Menambahkan overload
rememberDecoratedNavEntries
baru yang menggunakan daftarNavEntry
untuk menghias. Entri input dapat didekorasi dengan dekorator entri lain. (I5a034, b/444230270) - Menghapus parameter jenis kartu pengganti navigation3 (I02540)
- Meningkatkan penanganan generik untuk DSL
entryProvider
. Jika sebelumnya Anda mengimporandroidx.navigation3.runtime.entry
, hal ini tidak diperlukan lagi. (I299fc) - Batasi penggantian
NavBackStackSerializer
berbasis refleksi ke Android. Hal ini mencegah kegagalan serialisasi runtime implisit pada platform non-Android dengan menerapkan penggunaan penggantianSavedStateConfiguration
eksplisit dalam kode multiplatform. (I73313, b/420443609) - Jadikan
swipeEdge
NavigationEvent
sebagai@IntDef
(Icee54, b/443950342) - Membatasi serialisasi
NavBackStack
ke Android. Hal ini mencegah kegagalan runtime di platform non-Android. Untuk penyimpanan status multiplatform, gunakan penggantianrememberNavBackStack
denganSavedStateConfiguration
eksplisit. (I1e418, b/420443609)
Perbaikan Bug
- Memperbaiki error selama kembali prediktif saat
NavDisplay
bertingkat memiliki satu entri turunan. (I2cdc0, b/441933162)
Versi 1.0.0-alpha09
10 September 2025
androidx.navigation3:navigation3-*:1.0.0-alpha09
dirilis. Versi 1.0.0-alpha09 berisi commit ini.
Perubahan API
DecoratedNavEntryProvider
telah diganti denganrememberDecoratedNavEntries
yang membuat dan menampilkan NavEntry yang dihiasi dengan daftar dekorator yang disediakan (I0fe1c, b/441328236)NavBackStack
sekarang bersifat generik untuk jenisNavKey
. Hal ini memungkinkan aplikasi dan library menentukan jenis kunci kustom untuk tumpukan belakangnya, bukan hanya dibatasi padaNavKey
. (I4d190,Iad2f4, b/420443609)NavBackStack
kini menjadi@kotlinx.serialization.Serializable
, sehingga memungkinkan penyimpanan dan pemulihan status navigasi di seluruh penghentian proses dan perubahan konfigurasi tanpa boilerplate tambahan. (I2c3cf, b/420443609)RememberNavBackStack
telah dipindahkan kecommonMain
untuk memastikan bahwaRememberNavBackStack
disediakan di semua target platform. (Id69e7, b/420443609)
Perbaikan Bug
NavDisplay
kini memindahkan setiapNavEntry
keLifecycle.State
yang benar dengan benar. (I30aac, b/440145700)- Memperbaiki masalah saat
NavDisplay
mengabaikanNavigationEventDispatcherOwner
bertingkat yang ditetapkan melaluiLocalNavigationEventDispatcherOwner
libraryNavigationEvent
. (I6224a)
Perubahan Dependensi
- Navigation3 kini bergantung pada NavigationEvent Alpha08.
Versi 1.0.0-alpha08
27 Agustus 2025
androidx.navigation3:navigation3-*:1.0.0-alpha08
dirilis. Versi 1.0.0-alpha08 berisi commit ini.
Fitur Baru
- Menambahkan target Multiplatform Kotlin (KMP) baru ke artefak
Navigation3 Runtime
.Navigation3 Runtime
kini mendukung total platform berikut: JVM (Android dan Desktop), Native (Linux, iOS, watchOS, macOS, MinGW), dan Web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). Catatan: Ini tidak menyediakan target KMP untuk artefakNavigation3 UI
. Di platform lain, Anda harus menerapkanNavDisplay
kustom Anda sendiri. Jika Anda ingin melihatnya didukung, pilih masalah Jetbrains di sini dan pantau progresnya untuk mendapatkan dukungan tambahan di sana. - Objek
NavDisplayInfo
sekarang bersifat publik dan dapat digunakan untuk mengambil daftar entri yang terlihat dariNavDisplay
. (Ibc91f)
Perubahan API
- Menambahkan
NavBackStackSerializer
baru untuk digunakan bersamarememberNavBackStack
guna melakukan pemulihan status.rememberNavBackStack()
kini juga menggunakanSavedStateConfiguration
yang dapat digunakan untuk memberikan konfigurasi Anda sendiri. (I2f4d2, I4cd58, b/420443609)
Perbaikan Bug
- Memperbaiki masalah saat navigasi menyebabkan peristiwa Siklus Proses yang salah dipicu. (I8bf6d, b/425901162, b/434109022)
Masalah Umum
- Ada bug yang diperkenalkan oleh I8bf6d yang menyebabkan Siklus Proses didasarkan pada adegan, bukan entri individual, yang merusak Siklus Proses untuk kasus apa pun saat
key
yang diberikan keNavEntry
bukanString
atauNavEntry
Anda belum mengganticontentKey
dan menyetelnya sama dengankey
(perhatikan bahwa tindakan ini memastikan kunci Anda dapat disimpan keBundle
). Bug ini telah diperbaiki untuk rilis berikutnya. (b/440145700)
Versi 1.0.0-alpha07
13 Agustus 2025
androidx.navigation3:navigation3-*:1.0.0-alpha07
dirilis. Versi 1.0.0-alpha07 berisi commit ini.
Pembaruan MinSdk
- minSdk default untuk AndroidX telah dipindahkan dari API 21 ke API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Perubahan API
SavedStateNavEntryDecorator
sekarang menggunakanSaveableStateRegistry
yang dibuat ke dalamSaveableStateProvider
untuk menyimpan dan memulihkan status. (If8d9a)predictivePopTransitionSpec
kini menyediakan tepi geser sebagai parameter, sehingga Anda dapat menyesuaikan transisi berdasarkan tepi tempat pengguna memulai gestur Kembali Prediktif. (I753a8)
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan adegan kustom dihitung ulang tanpa batas karena adegan terbaru tidak diingat. (I7ba84, b/418153031)
Pembaruan dependensi
- Navigation3 kini bergantung pada Navigation Event
1.0.0-alpha06
.
Versi 1.0.0-alpha06
30 Juli 2025
androidx.navigation3:navigation3-*:1.0.0-alpha06
dirilis. Versi 1.0.0-alpha06 berisi commit ini.
Pembaruan Dependensi
- Navigation3 kini bergantung pada Navigation Event
1.0.0-alpha05
.
Versi 1.0.0-alpha05
2 Juli 2025
androidx.navigation3:navigation3-*:1.0.0-alpha05
dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Perubahan Perilaku
- Status
NavEntry
kini sepenuhnya didasarkan pada daftar dekorator saat ini yang diteruskan keNavDisplay
. Artinya, dekorator harus ditukar bersama data sebelumnya jika ada beberapa data sebelumnya untuk mempertahankan status NavEntry pada data sebelumnya. Jika tidak, status akan dihapus seolah-olah entri dikeluarkan (bukan ditukar). (I7a759, b/428033667)
Versi 1.0.0-alpha04
18 Juni 2025
androidx.navigation3:navigation3-*:1.0.0-alpha04
dirilis. Versi 1.0.0-alpha04 berisi commit ini.
Perubahan API
NavEntry.content
kini bersifat pribadi. Untuk memanggil kontenNavEntry
, panggil APINavEntry.Content()
baru yang tidak lagi memerlukan parameterkey
untuk dipanggil. (Icd0fd, b/420991203)NavEntry.key
kini menjadi kolom pribadi.NavEntry
dan status relevannya harus diidentifikasi oleh kolomcontentKey
baru yang dihasilkan dari lambdacontentKeyFactory
baru dan secara default menggunakan hash yang dapat disimpan yang dihasilkan dariNavEntry.key
(I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812)
Perubahan Dependensi
- Navigation3 kini bergantung pada artefak
androidx.navigationevent.compose
yang baru.
Versi 1.0.0-alpha03
4 Juni 2025
androidx.navigation3:navigation3-*:1.0.0-alpha03
dirilis. Versi 1.0.0-alpha03 berisi commit ini.
Perbaikan Bug
Navigation3
tidak akan lagi menghapus status dekorator untukbackStacks
yang telah ditukar dan diganti dengan instancebackStack
lain. (I28a42, b/415076044)
Versi 1.0.0-alpha02
23 Mei 2025
androidx.navigation3:navigation3-*:1.0.0-alpha02
dirilis. Versi 1.0.0-alpha02 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah pada
SavedStateNavEntryDecorator
yang menyebabkan konflik untuk berbagai class data dengan nilai properti yang sama. (b/418070648, Iff4775) - Memperbaiki masalah class yang hilang yang akan menyebabkan error saat dijalankan tanpa mendeklarasikan dependensi eksplisit. (b/419049149, I4b4ed)
Versi 1.0.0-alpha01
20 Mei 2025
androidx.navigation3:navigation3-*:1.0.0-alpha01
dirilis. Versi 1.0.0-alpha01 berisi commit ini.
Fitur Baru
Navigation3 adalah library navigasi baru yang dibuat khusus untuk menangani navigasi dalam aplikasi Jetpack Compose. Artefak androidx.navigation3.runtime
menyediakan blok penyusun, sedangkan artefak androidx.navigation3.ui
menyediakan lapisan UI melalui NavDisplay
API. Developer dapat memberikan statusnya sendiri langsung ke fungsi composable NavDisplay
, yang mengubah konten berdasarkan perubahan status developer.
@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 */ }
})
Untuk mengetahui informasi selengkapnya, lihat panduan Navigation3.