Вышеупомянутый TopLevelNavHost является вложенным из RootNavHost, и я пытаюсь добиться того, чтобы при навигации через нижнюю панель навигации, если пользователь переходит к пункту назначения, уже присутствующему на графике, просто переместите этот пункт назначения на вершину стека.
Я нашел предложение использовать popUpTo, но это удаляет промежуточные маршруты, чего я не хочу. По сути, пытаюсь реализовать навигацию YouTube.
[code]@Composable fun TopLevelNavHost( navigateToRoot: (Route) -> Unit, modifier: Modifier = Modifier ) { val topLevelNavController = rememberNavController() val currentBackStackEntry by topLevelNavController.currentBackStackEntryAsState() val currentBackStack by topLevelNavController.currentBackStack.collectAsStateWithLifecycle() val density = LocalDensity.current
@Composable fun BottomBar( currentRoutePath: String, navigateToCallback: (Route) -> Unit, modifier: Modifier = Modifier ) { NavigationBar( modifier = modifier, ) { TOP_LEVEL_ROUTES.forEach { entry -> val isSelected = entry.path == currentRoutePath NavigationBarItem( selected = isSelected, onClick = { navigateToCallback(entry) }, icon = { Icon( imageVector = (if (isSelected) entry.selectedIcon else entry.icon) ?: Icons.Default.Error, contentDescription = entry.name, modifier = Modifier.semantics { role = Role.Tab }, ) }, ) } } } [/code] Вышеупомянутый TopLevelNavHost является вложенным из RootNavHost, и я пытаюсь добиться того, чтобы при навигации через нижнюю панель навигации, если пользователь переходит к пункту назначения, уже присутствующему на графике, просто переместите этот пункт назначения на вершину стека. Я нашел предложение использовать popUpTo, но это удаляет промежуточные маршруты, чего я не хочу. По сути, пытаюсь реализовать навигацию YouTube.