Study
Jetpack Compose

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.

Editor Latihan

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.