У меня есть кнопка внутри фрагмента, которая открывает наложение создания.
Код: Выделить всё
private fun onClicked() {
binding.composeView.setContent {
cashDialogComposableView()
}
}
И вот код экрана создания сообщения:
Код: Выделить всё
@Composable
fun cashDialogComposableView() {
val cashDialogViewModel: CashDialogViewModel = viewModel()
cashDialogViewModel.changeCashDialogVisibility(true)
when (cashDialogViewModel.cashDialogVisibility.collectAsState().value) {
true -> {
cashDialogScreen(
cashDialogModel = CashDialogModel(
title = "",
subtitle = "",
confirmButtonAction = {},
cancelButtonAction = {},
icon = R.drawable.error_icon
)
) {
cashDialogViewModel.changeCashDialogVisibility(false)
}
}
false -> {
return
}
}
Когда пользователь нажимает кнопку, он вызывает этот метод... и первое состояние истинно... и когда пользователь отклоняет наложение это изменит состояние на false, и наложение скроется. и когда пользователь нажимает еще раз, первая строка меняет состояние на true.. но этого не происходит.. происходит то, что происходит, когда пользователь нажимает кнопку «Отклонить изменение состояния», а затем экран перекомпоновывается и снова вызывает CashDialogViewModel.changeCashDialogVisibility(true) < /code> эту строку, чтобы после того, как наложение было скрыто, он снова показывался.
Я пробовал много вещей, таких как LaunchedEffect и `DisposableEffect.
Как решить эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/778 ... omposition