Passing Data Antar Screen
Penjelasan
Data dikirim ANTAR layar lewat route yang menyertakan argumen di string-nya (mis. "produk/{id}"), didaftarkan di NavHost dengan arguments = listOf(navArgument("id") {...}), dibaca kembali lewat backStackEntry.arguments di Composable tujuan.
Contoh Konsep
NavHost(navController = navController, startDestination = "produk") {
composable("produk") {
Button(onClick = { navController.navigate("produk/5") }) {
Text("Lihat Produk 5")
}
}
composable(
"produk/{id}",
arguments = listOf(navArgument("id") { type = NavType.IntType })
) { backStackEntry ->
val id = backStackEntry.arguments?.getInt("id") ?: 0
Text("Menampilkan produk dengan id: $id")
}
}
Praktikum
Buat composable route "artikel/{slug}" dengan arguments navArgument("slug") { type = NavType.StringType }, tampilkan "Artikel: $slug" dari backStackEntry.arguments.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
getInt("id") ?: 0 dan getString("slug") memakai Elvis operator (?:) untuk nilai default kalau argumennya null — arguments di backStackEntry bertipe NULLABLE karena secara teknis navigasi BISA terjadi tanpa argumen yang diharapkan, walau jarang terjadi kalau route-nya didefinisikan benar.