Я реализую новый
Код: Выделить всё
androidx.navigation3Архитектура:
- Глобальная навигация: управляется NavDisplay и SnapshotStateList.
- Bottom Навигация: реализована как один пункт назначения () в глобальном стеке. Внутри Dashboard я переключаю экраны, используя локальное состояние var currentTab.
Код: Выделить всё
Dashboard
Желаемое поведение:
- Если на вкладке «Профиль» -> Назад нажмите, переключается на вкладку «Главная».
- Если на вкладке «Домой» -> При обратном нажатии открывается экран (закрывается приложение).
1. Navigator.kt (глобальное состояние)
Kotlin
Код: Выделить всё
class Navigator(startDestination: Any) {
val backStack: SnapshotStateList = mutableStateListOf(startDestination)
fun goBack() {
backStack.removeLastOrNull()
}
}
Kotlin
Код: Выделить всё
@Composable
fun RootNavHost() {
val navigator = koinInject()
NavDisplay(
backStack = navigator.backStack,
onBack = { navigator.goBack() }, //
// Switching content based on currentTab
when (currentTab) {
AppTab.Home -> HomeScreen(...)
AppTab.Profile -> ProfileScreen(...)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ation-tabs
Мобильная версия