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:
- 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)
}
-
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.
-
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.
-
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.