Sobes.tech
Junior — Middle

Jetpack Compose Navigation istifadə edərkən ekranlar arasında məlumatların ötürülməsini həyata keçirmək üçün hansı metodlar istifadə oluna bilər?

sobes.tech Süni İntellekt

AI-dan cavab

Jetpack Compose Navigation-da ekranlar arasında məlumatların ötürülməsi üçün bir neçə yanaşma mövcuddur:

  1. Navigasiya arqumentləri
    • Marşrutu elan edərkən, növbəti ekrana ötürüləcək parametrləri göstərə bilərsiniz.
    • Primitiv tiplər və sətirlər dəstəklənir.
    • id ötürülməsi nümunəsi:
navController.navigate("detail_screen/$itemId")

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

    • Navigasiya qrafiki və ya fəaliyyət səviyyəsində yaşayan ViewModel-dən istifadə.
    • Hər iki ekran eyni ViewModel nümunəsinə çıxış edir və məlumat mübadiləsi edə bilər.
  2. Vəziyyət (State Hoisting)

    • Ekran funksiyalarının parametrləri vasitəsilə vəziyyətin ötürülməsi.
    • Kiçik məlumatlar üçün və ekranlar eyni komponentdədirsə uyğundur.
  3. savedStateHandle-də məlumatların saxlanması

    • Məlumatları əvvəlki ekrana geri dönməzdən əvvəl savedStateHandle-ə yerləşdirmək olar.
    • Məlumatların geri göndərilməsinə imkan verir.

savedStateHandle istifadə nümunəsi:

// Məlumatları geri göndərmək
navController.currentBackStackEntry?.savedStateHandle?.set("key", value)

// Əvvəlki ekranda məlumatları almaq
val savedStateHandle = navController.previousBackStackEntry?.savedStateHandle
val value = savedStateHandle?.get<String>("key")

Beləliklə, metod seçimi məlumatların növü və həcmi, həmçinin tətbiqin memarlığından asılıdır.