Junior — Middle
Jetpack Compose Navigasyonu kullanırken ekranlar arasında veri aktarımını gerçekleştirmek için hangi yöntemler kullanılabilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Jetpack Compose Navigation'da ekranlar arasında veri iletmek için birkaç yaklaşım vardır:
- Navigasyon Argümanları
- Yolu tanımlarken, bir sonraki ekrana iletilecek parametreleri belirtebilirsiniz.
- Primitif türler ve dizgiler desteklenir.
- id iletimi örneği:
navController.navigate("detail_screen/$itemId")
composable("detail_screen/{itemId}") { backStackEntry ->
val itemId = backStackEntry.arguments?.getString("itemId")
DetailScreen(itemId)
}
-
Shared ViewModel
- Navigasyon grafiği veya aktivite seviyesinde yaşayan bir ViewModel kullanımı.
- Her iki ekran da aynı ViewModel örneğine erişir ve veri alışverişi yapabilir.
-
Durum (State Hoisting)
- Ekran fonksiyonlarının parametreleri aracılığıyla durum iletimi.
- Küçük veriler ve ekranlar aynı bileşende ise uygundur.
-
NavBackStackEntry.savedStateHandle ile veri kaydetme
- Önceki ekrana dönüşte verileri savedStateHandle içine koyabilirsiniz.
- Veri geri iletimi sağlar.
savedStateHandle kullanım örneği:
// Veri geri gönderme
navController.currentBackStackEntry?.savedStateHandle?.set("key", value)
// Önceki ekranda veri alma
val savedStateHandle = navController.previousBackStackEntry?.savedStateHandle
val value = savedStateHandle?.get<String>("key")
Yani, yöntem seçimi veri tipi ve hacmine, ayrıca uygulamanın mimarisine bağlıdır.