Как избежать многократного вызова обратного вызова onClick Jetpack ComposeAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как избежать многократного вызова обратного вызова onClick Jetpack Compose

Сообщение Anonymous »

При тестировании приложения я понял, что если пользователь несколько раз быстро нажмет FloatingActionButton, обратный вызов onClick может быть запущен несколько раз. В моем случае это привело к тому, что обратный стек извлекался несколько раз, поскольку обратный вызов onPopBackStack поднимается до NavHost, где он имеет доступ к navController, и вызывает метод popBackStack. .

Код: Выделить всё

fun AddEditTodoScreen(onPopBackStack: () -> Unit, viewModel: AddEditTodoViewModel = viewModel()) {

var isNavigating by remember{
mutableStateOf(false)
}

LaunchedEffect(key1 = true){
viewModel.uiEvent.collect{event : UiEvent ->
when(event){
is UiEvent.PopBackStack -> onPopBackStack
else -> Unit
}
}
}

Scaffold(floatingActionButton = {
FloatingActionButton(onClick = {
if(!isNavigating){
isNavigating = !isNavigating
onPopBackStack()
}
}) {
Icon(imageVector = Icons.Default.Check, contentDescription = "Check")
}
В настоящее время я просто устанавливаю для isNavigating значение true при первом нажатии кнопки FloatingActionButton, а при повторном нажатии проверяется, установлен ли флаг isNavigating установлено значение true, если это так, то он ничего не делает. Какой способ решения этой проблемы был бы лучше, если таковой имеется?

Подробнее здесь: https://stackoverflow.com/questions/763 ... ck-compose
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»