Как очищать стак в NavController чтоб там оставался только один экран?
У меня есть экран с composable для планшета, где с левой стороны находится панель со списком кнопок. Когда пользователь нажимает на любую из этих кнопок, в правой панели открывается соответствующий экран.
Для поддержки этой функциональности я использую NavHost в правой панели.
...
Column(
modifier = Modifier
.background(Color.Cyan.copy(alpha = 0.2f)) // TODO: JUST FOR TESTING
.fillMaxHeight()
.weight(2f)
) {
NavHost(
navController = navController,
startDestination = LanguageSettingsScreenRoute.ROUTE
) {
composable(LanguageSettingsScreenRoute.ROUTE) {
LanguageSettingsScreen()
}
composable(DeviceSettingScreenRoute.ROUTE) {
DeviceSettingScreen()
}
}
}
...
Здесь у меня LanguageSettingsScreenRoute как startDestination.
Затем (например:) пользователь нажимает на DeviceSettingScreen.
...
SettingItem.SettingType.LANGUAGE_SETTINGS ->
navigator.navigate(route = LanguageSettingsScreenRoute) {
popUpTo(LanguageSettingsScreenRoute.buildRoute()) { inclusive = true }
}
SettingItem.SettingType.DEVICE_SETTINGS ->
navigator.navigate(route = DeviceSettingScreenRoute) {
popUpTo(DeviceSettingScreenRoute.buildRoute()) { inclusive = true }
}
...
Я ожидаю, что DeviceSettingScreen будет единственным экраном в стеке, но на самом деле он накладывается на LanguageSettingsScreen. Таким образом, когда я нажимаю "back button", сначала поднимается второй экран из стака - DeviceSettingScreen, и затем нужно снова нажать "back button", чтобы вернуться к первому экрану LanguageSettingsScreen и выйти.
Вопрос: как сохранить только один "выбранный" экран в стаке и удалить все остальные, чтобы пользователь мог нажать "back button" один раз и выйти?