Предположим, у меня есть два составных объекта: Экран A и Экран B. Я перехожу от Экран A к Экран B:

На Экран B есть кнопка «Назад», которая после нажатия вызывает popBackStack():
@Composable веселый экранB( навконтроллер: навконтроллер ) { ... IconButton(onClick = { navController.popBackStack() }) { Икона( imageVector = Icons.Filled.ArrowBackIos, contentDescription = stringResource(R.string.content_description_back_icon) ) } ... } Желаемое поведение заключается в том, что после нажатия этой кнопки снова отображается Экран A. Это отлично работает, если вы нажмете кнопку один раз:

Если вы нажмете кнопку дважды в довольно быстрой последовательности, Экран B выскочит из задней стопки, но также и Экран A, и у меня останется пустое место. экран:

NavController использует переходы по умолчанию, и очевидно, что вы все равно можете взаимодействовать с компонуемым объектом во время перехода навигации.
Теперь я могу:
[*]отключить переходы навигации (чего я делать не хочу) [*]или отключить взаимодействие с составным объектом после вызова popBackStack(), но для этого потребуется отредактировать каждый составной объект в моем проекте, который имеет аналогичную кнопку «Назад», а затем не забыть добавить этот код к каждому новому можно составить с помощью такой кнопки.
Мне кажется, что кто-то уже сталкивался с этой проблемой и существует более элегантное решение, чем то, что я предложил. К сожалению, в инете ничего подходящего не нашел. Если у вас есть идеи, пожалуйста, помогите.
Мобильная версия