Как очищать стак в 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" один раз и выйти?


Ответы (0 шт):