в чем - по нажатию на кнопку добавить в избранное, она должна не дожидаясь ответа с сервера менять свое состояние. Удается это сделать только путем превращения MutableStateFlow в null, ждать одну миллисекунду и затем возвращать значение, что откровенный говнокод. Если убрать delay или вовсе избавиться от передачи null, то все это положенным образом не работает и кнопка обновляет состояние только по возвращению ответа с севрвера. Как быть? 🥲
А если вместо emit() в корутине использовать value?
Пробовал, такой же результат( Сейчас, конечно, еще попробую, отпишу
Mutable state flow имеет метод .update или что то такое, попробуй его
Если это не работает, то у тебя проблема во вью слое
@VITYQ Попробуй это, и вместо tmp it.copy
В компоузе через collectAsStateWithLifecycle() собираю
Ты в ui собираешь с MutableStateFlow или StateFlow?
не сработало
Странно, апдейт обычно работает. Ты в мейнтреде его делаешь?
У тебя вью слой некорректный
во viewmodelscope
Вопрос хороший, но смена на Dispatchers.Main не решила проблему, замена collectAsStateWithLifecycle на collectAsState тоже не дала результата
Апдейт можно вызывать без всяких скоупов. Покажи код в юай, как ты собираешь данные с флоу
Используй by вместо =
У тебя вью слой неправильный, во flow нет никаких проблем
Не помогло(
Напрямую залезать в value из UI - норм?
А ты меня то зачем спрашиваешь?
Интересуюсь мнением
Я ему ответил про то, что он во вьюмодели делает
А, ты про ето, ну ето пиздец, да
Проверил подобным образом изменение данных - данный блок срабатывает только при открытии экрана (нет данных) прогрузке данных. Дальше при нажатии кнопки - тишина
Ну так это вообще что то странное, тут зачем тебе лаунч еффект
При изменении flow лаунчд эффект, при повешенном на него стейт от флоу, не будет дергаться?
Почитай что такое лаунч еффект
Обсуждают сегодня