Sobes.tech
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:

  1. 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)
}
  1. 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.
  2. 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ā.
  3. 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.