Sobes.tech
Junior — Middle

Чӣ гуна усулҳо метавонанд барои иҷрои интиқоли маълумот байни экранҳо дар истифодаи навигатсияи Jetpack Compose истифода шаванд?

sobes.tech AI

Ҷавоб аз AI

Дар Jetpack Compose Navigation, чанд роҳҳои интиқоли маълумот байни экранҳо мавҷуданд:

  1. Аргументҳои навигатсия
    • Ҳангоми эълон кардани роҳ, шумо метавонед параметрҳоро муайян кунед, ки ба экрани оянда интиқол дода мешаванд.
    • Тавсия дода мешавад, ки намудҳои примиативӣ ва сатрҳо истифода шаванд.
    • Мисоли интиқоли id:
navController.navigate("detail_screen/$itemId")

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

    • Истифодаи ViewModel, ки дар сатҳи графи навигатсия ё фаъолият зиндагӣ мекунад.
    • Ҳарду экран ба як нусхаи ViewModel дастрасӣ доранд ва метавонанд маълумотро тавассути он мубодила кунанд.
  2. Ҳолат (State Hoisting)

    • Тасҳеҳ кардани ҳолат тавассути параметрҳои функсияҳои экран.
    • Барои маълумоти хурд ва вақте ки экранҳо дар як компонент ҳастанд, мувофиқ аст.
  3. Захира кардани маълумот дар NavBackStackEntry.savedStateHandle

    • Мумкин аст, ки маълумотро пеш аз баргаштан ба экранҳои қаблӣ дар savedStateHandle гузоред.
    • Ин имкон медиҳад, ки маълумотро баргардонед.

Масалан, истифодаи savedStateHandle:

// Баргардонидани маълумот
navController.currentBackStackEntry?.savedStateHandle?.set("key", value)

// Гирифтани маълумот дар экранҳои қаблӣ
val savedStateHandle = navController.previousBackStackEntry?.savedStateHandle
val value = savedStateHandle?.get<String>("key")

Аз ин рӯ, интихоби усул вобаста ба намуд ва ҳаҷми маълумот, инчунин ба сохтори барнома мебошад.