Создайте тип безопасной навигации. Преобразовать в маршрутAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Создайте тип безопасной навигации. Преобразовать в маршрут

Сообщение Anonymous »

Я создаю приложение, в котором у меня есть верхний каркас, поэтому я меняю его заголовок в зависимости от маршрута, потому что не могу получить текущий класс Desitnation KClass.

Код: Выделить всё

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()
}
}
),
И проблема возникает с FirstLoginScreen2, поскольку он ожидает значения в своем маршруте:
Маршрут: com.coreenter.ui.OwnerGraph. FirstLogin.FirstLoginScreen2/{list}
Мой список должен содержать соответствующий элемент: com.coreenter.ui.OwnerGraph.FirstLogin.FirstLoginScreen2
Есть ли альтернативный способ решения этой проблемы?
Есть ли какой-нибудь метод, с помощью которого я мог бы создать соответствующую строку маршрута для пунктов назначения типа навигации?

Подробнее здесь: https://stackoverflow.com/questions/792 ... t-to-route
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»