Значение stateFlow меняется, но подписчики не уведомляютсяAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Значение stateFlow меняется, но подписчики не уведомляются

Сообщение Anonymous »

Я использую коин и реактивный ранец. и когда я обновляю значение stateFlow, подписчики не уведомляются, и в составных функциях не происходит рекомпозиции.
часть кода в модели представления:

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

private val _audio = MutableStateFlow(Audio())
val audio: StateFlow get() = _audio

fun updateAudio(newAudio: Audio) {
Log.i(TAG, "updateAudio: ${audio.value}")
_audio.value = newAudio
Log.i(TAG, "updateAudio: ${audio.value}")
}
...

value of _audio.value changes, but subscribers are not notified
log:
updateAudio: Audio(id=-1, title=Dj Ess - Change My Wayz Mixxx, artist=, ...)
updateAudio: Audio(id=-1, title=lungskull - magic, artist=, ...)

часть составной функции:

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

@Composable
fun PlayingTrackBottomBar(
onClick: (Audio) -> Unit = {},
playerServiceViewModel: PlayerServiceViewModel = koinViewModel()
) {
val audio by playerServiceViewModel.audio.collectAsState()
...
}
также подписался на изменение значения в самой модели представления

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

viewModelScope.launch {
audio.collect {
Log.i(TAG, "init: $it")
}
}
Я пробовал разные варианты (оперативные данные, поток состояний, состояние), но ничего не помогло.
Посмотрев логи, я обнаружил, что значение stateFlow меняется, но ни один из них не меняется. подписчики уведомлены

Подробнее здесь: https://stackoverflow.com/questions/787 ... t-notified
Ответить

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

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

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

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

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