Navigation Event adalah library yang menyediakan solusi Multiplatform Kotlin (KMP) untuk mengintegrasikan peristiwa navigasi tingkat sistem ke dalam aplikasi Anda. API ini dirancang untuk menjadi lapisan dasar dalam menangani arah navigasi di berbagai platform yang didukung.
Konsep utama
Sistem Peristiwa Navigasi dibangun di sekitar model dispatcher-handler terpusat, yang sering digunakan dalam hierarki induk-turunan untuk memetakan ke struktur UI yang kompleks, seperti yang ditemukan di Jetpack Compose.
NavigationEventDispatcher
NavigationEventDispatcher adalah class pusat yang bertanggung jawab untuk
mengelola semua konsumen peristiwa navigasi terdaftar
(NavigationEventHandler) dan mengatur alur peristiwa.
Dalam penyiapan hierarkis, semua dispatcher dalam rantai yang sama berbagi satu
NavigationEventProcessor, yang mengelola status global dan memastikan satu,
urutan pengiriman terpadu di seluruh hierarki.
NavigationEventHandler
NavigationEventHandler adalah class abstrak yang menerima dan menangani
peristiwa navigasi yang dikirim oleh NavigationEventDispatcher. Class ini menentukan
metode callback yang sesuai dengan berbagai tahap siklus proses gestur navigasi, seperti saat gestur dimulai, berlanjut, selesai, atau dibatalkan.
Handler dapat merespons peristiwa ini untuk mengupdate UI atau status aplikasi sebagai respons terhadap tindakan navigasi pengguna. Beberapa handler dapat didaftarkan dengan dispatcher dan dipanggil berdasarkan prioritas dan urutan pendaftaran.
NavigationEvent
NavigationEvent adalah class data yang membawa detail
gestur navigasi.
NavigationEventInfo
NavigationEventInfo adalah class abstrak yang memberikan informasi
kontekstual tentang status navigasi.
NavigationEventInput
NavigationEventInput adalah class abstrak untuk komponen yang membuat
dan mengirim peristiwa navigasi. Komponen ini bertindak sebagai sisi "input" sistem navigasi, menerjemahkan peristiwa khusus platform (seperti gestur kembali sistem atau klik tombol) menjadi peristiwa standar yang dapat dikirim ke NavigationEventDispatcher.
Pemicu dan rute navigasi yang didukung
Sistem Peristiwa Navigasi dirancang untuk mencakup lebih dari sekadar tombol kembali sistem, dengan desain yang mendukung beberapa arah navigasi dan metode input di seluruh platform.
Arah yang didukung
Platform yang berbeda mendukung arah navigasi yang berbeda:
Platform |
Kembali |
Up |
Meneruskan |
Beranda |
Ponsel Android |
✅ |
✅ |
🚫 |
✅ |
Tablet Android |
✅ |
✅ |
🚫 |
✅ |
Web (Browser) |
✅ |
✅ |
✅ |
🚫 |
iOS (iPhone/iPad) |
✅ |
🚫 |
✅ |
✅ |
Pemicu yang didukung
Penanganan input dilakukan melalui berbagai mekanisme di setiap platform:
Trigger |
Ponsel Android |
Web (Browser) |
iOS (iPhone/iPad) |
Tombol kembali keyboard |
✅ Kembali |
❓ |
✅ Kembali |
Tombol kembali software |
🚫 |
✅ Kembali |
✅ Kembali |
Tombol naik software |
✅ Naik |
🚫 |
🚫 |
Gestur dari kiri |
✅ Kembali |
❓ |
✅ Kembali |
Gestur dari kanan |
✅ Kembali |
❓ |
✅ Maju |
Gestur dari bawah |
✅ Beranda |
🚫 |
✅ Beranda |