Junior — Middle
Welke methoden kunnen worden gebruikt om gegevensoverdracht tussen schermen te implementeren bij gebruik van Jetpack Compose Navigation?
sobes.tech AI
Antwoord van AI
In Jetpack Compose Navigation zijn er verschillende benaderingen om gegevens tussen schermen te verzenden:
- Navigatie-argumenten
- Bij het declareren van de route kunnen parameters worden opgegeven die naar het volgende scherm worden doorgegeven.
- Ondersteunde primitieve typen en strings.
- Voorbeeld van het doorgeven van id:
navController.navigate("detail_screen/$itemId")
composable("detail_screen/{itemId}") { backStackEntry ->
val itemId = backStackEntry.arguments?.getString("itemId")
DetailScreen(itemId)
}
-
Shared ViewModel
- Gebruik van een ViewModel die op het niveau van de navigatiegrafiek of activiteit leeft.
- Beide schermen krijgen toegang tot hetzelfde ViewModel-voorbeeld en kunnen gegevens uitwisselen.
-
State (State Hoisting)
- Het doorgeven van toestand via parameters van schermfuncties.
- Geschikt voor kleine gegevens en wanneer schermen in hetzelfde component zijn.
-
Gegevens opslaan in NavBackStackEntry.savedStateHandle
- Gegevens kunnen worden opgeslagen in savedStateHandle voordat je terugkeert naar het vorige scherm.
- Maakt het mogelijk om gegevens terug te sturen.
Voorbeeld van het gebruik van savedStateHandle:
// Gegevens terugsturen
navController.currentBackStackEntry?.savedStateHandle?.set("key", value)
// Gegevens ophalen in het vorige scherm
val savedStateHandle = navController.previousBackStackEntry?.savedStateHandle
val value = savedStateHandle?.get<String>("key")
Dus, de keuze van de methode hangt af van het type en de omvang van de gegevens, evenals van de architectuur van de toepassing.