Junior — Middle
Kādiem metodiem var izmantot datu pārraidi starp ekrāniem, izmantojot Jetpack Compose Navigation?
sobes.tech AI
Atbilde no AI
Jetpack Compose Navigation ir vairākas pieejas datu nodošanai starp ekrāniem:
- Navigācijas argumenti
- Deklarējot maršrutu, var norādīt parametrus, kas tiks nodoti nākamajam ekrānam.
- Atbalsta primitivus tipus un virknes.
- Piemērs, kā nodot id:
navController.navigate("detail_screen/$itemId")
composable("detail_screen/{itemId}") { backStackEntry ->
val itemId = backStackEntry.arguments?.getString("itemId")
DetailScreen(itemId)
}
-
Shared ViewModel
- Izmanto ViewModel, kas dzīvo navigācijas grafika vai aktivitātes līmenī.
- Abi ekrāni piekļūst tam pašam ViewModel eksemplāram un var apmainīties ar datiem caur to.
-
Stāvoklis (State Hoisting)
- Stāvokļa nodošana caur funkciju parametriem.
- Piemērots mazākiem datiem un kad ekrāni ir tajā pašā komponentā.
-
Datu saglabāšana NavBackStackEntry.savedStateHandle
- Datus var ievietot savedStateHandle pirms atgriešanās uz iepriekšējo ekrānu.
- Tas ļauj atgriezt datus atpakaļ.
Piemērs, kā izmantot savedStateHandle:
// Datu atgriešana
navController.currentBackStackEntry?.savedStateHandle?.set("key", value)
// Datu saņemšana iepriekšējā ekrānā
val savedStateHandle = navController.previousBackStackEntry?.savedStateHandle
val value = savedStateHandle?.get<String>("key")
Tādējādi, metodes izvēle ir atkarīga no datu veida un apjoma, kā arī no lietojumprogrammas arhitektūras.