Peristiwa Navigasi

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 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 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 adalah class data yang membawa detail gestur navigasi.

NavigationEventInfo adalah class abstrak yang memberikan informasi kontekstual tentang status navigasi.

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