Junior — Middle
Jetpack Compose Navigatsiyasi yordamida ekranlar o'rtasida ma'lumotlarni uzatishni amalga oshirish uchun qanday usullar mavjud?
sobes.tech AI
AIdan javob
Jetpack Compose Navigation'da ekranlar o'rtasida ma'lumotlarni uzatish uchun bir nechta yondashuvlar mavjud:
- Navigatsiya argumentlari
- Yo'lni e'lon qilishda, keyingi ekran uchun o'tkaziladigan parametrlarni ko'rsatish mumkin.
- Primitiv turlar va satrlar qo'llab-quvvatlanadi.
- id o'tkazish misoli:
navController.navigate("detail_screen/$itemId")
composable("detail_screen/{itemId}") { backStackEntry ->
val itemId = backStackEntry.arguments?.getString("itemId")
DetailScreen(itemId)
}
-
Shared ViewModel
- Navigatsiya grafigi yoki faoliyat darajasida yashovchi ViewModeldan foydalanish.
- Ikkala ekran ham bir xil ViewModel nusxasiga kirishadi va ma'lumotlarni o'zaro almashishlari mumkin.
-
Holat (State Hoisting)
- Ekran funktsiyalarining parametrlaridan holatni o'tkazish.
- Kichik ma'lumotlar uchun va ekranlar bir komponentda bo'lsa mos keladi.
-
savedStateHandle orqali ma'lumotlarni saqlash
- Ma'lumotlarni oldindan saqlash uchun savedStateHandle ga joylashtirish mumkin.
- Ma'lumotlarni orqaga yuborish imkonini beradi.
savedStateHandle dan foydalanish misoli:
// Orqaga ma'lumot yuborish
navController.currentBackStackEntry?.savedStateHandle?.set("key", value)
// Oldingi ekranlarda ma'lumotlarni olish
val savedStateHandle = navController.previousBackStackEntry?.savedStateHandle
val value = savedStateHandle?.get<String>("key")
Shunday qilib, usul tanlovi ma'lumotlarning turi va hajmiga, shuningdek, ilovaning arxitekturasiga bog'liq.