Быстрые нажатия «+» в корзине иногда теряют одно добавление
fun onPlus(itemId: Long) = viewModelScope.launch(Dispatchers.Default) {
val current = _state.value
_state.value = current.copy(count = current.count + 1)
}
Пользователь быстро жмёт «+» три раза, счётчик показывает 2. Воспроизводится нестабильно. Как исправить, сохранив фоновый диспетчер?
- Менять состояние через _state.update { }
- Заменить MutableStateFlow на MutableSharedFlow
- Пометить _state аннотацией @Volatile
- Добавить delay(100) перед чтением value
