см. https://developer.android.com/jetpack/compose /navigation#bottom-nav
Проблема, с которой я столкнулся при этом подходе, заключается в том, что при этом подходе нижняя панель навигации будет видна на всех экранах. Я хочу, чтобы он был виден только на экранах, которые присутствуют в элементах нижней панели.
Второй подход к добавлению нижней панели — не добавлять NavHost внутри Scaffold. Вместо этого добавьте нижнюю панель в одно из мест назначения, а затем скройте/покажите составные элементы из тела Scaffold на основе выбранного таким образом индекса.
Код: Выделить всё
var selectedBottomBarIndex by remember {
mutableStateOf(0)
}
Scaffold(
bottomBar = {
MyBottomBar(currentIndex = selectedBottomBarIndex, onChanged = {
selectedBottomBarIndex = it
}
)
} {
when (selectedBottomBarIndex) {
0 -> HomeScreen(navController)
1 -> AssignmentHomeScreen(navController)
2 -> CategoryScreen(navController)
else -> ProfileHomeScreen(navController)
}
}
и безопасно ли использовать второй подход в рабочем приложении.
Подробнее здесь: https://stackoverflow.com/questions/768 ... ck-compose
Мобильная версия