Sobes.tech
Junior — Middle

Jetpack Compose Navigation колдонуп жатканда экрандар ортосунда маалыматтарды өткөрүүнү ишке ашыруунун кандай ыкмалары бар?

sobes.tech AI

AIден жооп

Jetpack Compose Navigation-де экрандар арасында маалыматтарды өткөрүү үчүн бир нече ыкмалар бар:

  1. Навигация аргументтери
    • Жолду жарыялаганда, кийинки экранга өткөрүлө турган параметрлерди көрсөтө аласыз.
    • Примитив түрлөрү жана саптар колдоого алынат.
    • id өткөрүү мисалы:
navController.navigate("detail_screen/$itemId")

composable("detail_screen/{itemId}") { backStackEntry ->
    val itemId = backStackEntry.arguments?.getString("itemId")
    DetailScreen(itemId)
}
  1. Shared ViewModel

    • Навигация графы же ишмердик деңгээлиндеги ViewModel колдонуу.
    • Эки экран тең бирдей ViewModel үлгүсүнө кирип, маалымат алмаша алышат.
  2. Күй (State Hoisting)

    • Экран функцияларынын параметрлери аркылуу күйдү өткөрүү.
    • Кичинекей маалыматтар үчүн жана экрандар бир компонентте болсо ылайыктуу.
  3. savedStateHandle аркылуу маалыматтарды сактоо

    • Маалыматтарды сакталган күйгө сактап, мурдагы экранга кайтаруу алдында коюу.
    • Бул маалыматтарды кайра берүү мүмкүнчүлүгүн берет.

savedStateHandle колдонуу мисалы:

// Маалыматты кайра берүү
navController.currentBackStackEntry?.savedStateHandle?.set("key", value)

// Мурдагы экранда маалымат алуу
val savedStateHandle = navController.previousBackStackEntry?.savedStateHandle
val value = savedStateHandle?.get<String>("key")

Демек, ыкманы тандоо маалыматтын түрү жана көлөмүнө, ошондой эле тиркеменин архитектурасына көз каранды.