Код: Выделить всё
val scaffoldListElements = remember { myAppScaffoldListElements }
val navController = LocalNavHostContoller.current
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentRoute = navBackStackEntry?.destination?.route
MyAppTheme {
val (topAppBar, bottomAppBar) = remember(currentRoute) {
val currentScaffoldDestination = scaffoldListElements[currentRoute]
Pair(
first = currentScaffoldDestination?.topAppBar,
second = currentScaffoldDestination?.bottomAppBar
)
}
Scaffold(
topBar = {
AnimatedVisibility(topAppBar != null) {
topAppBar?.invoke(navController)
}
}, ...
Код: Выделить всё
@Serializable
data object FirstLogin {
@Serializable
data object FirstLoginScreen1
@Serializable
data class FirstLoginScreen2(val list: List
)
Код: Выделить всё
val myAppScaffoldListElements = buildMap {
putAll(FIRST_LOGIN_SCAFFOLD_LIST_ELEMENTS)
}.toPersistentHashMap()
Код: Выделить всё
val FIRST_LOGIN_SCAFFOLD_LIST_ELEMENTS = hashMapOf(
OwnerGraph.FirstLogin.FirstLoginScreen1::class.qualifiedName to MyAppScaffoldElement(
topAppBar = { _ ->
MyAppHeader(showBackButton = false)
}
),
OwnerGraph.FirstLogin.FirstLoginScreen2::class.qualifiedName to MyAppScaffoldElement(
topAppBar = { navHostController ->
MyAppHeader {
navHostController.popBackStack()
}
}
),
Маршрут: com.coreenter.ui.OwnerGraph. FirstLogin.FirstLoginScreen2/{list}
Мой список должен содержать соответствующий элемент: com.coreenter.ui.OwnerGraph.FirstLogin.FirstLoginScreen2
Есть ли альтернативный способ решения этой проблемы?
Есть ли какой-нибудь метод, с помощью которого я мог бы создать соответствующую строку маршрута для пунктов назначения типа навигации?
Подробнее здесь: https://stackoverflow.com/questions/792 ... t-to-route
Мобильная версия