не добавлялось, то при вызове firstOrNull (и c first тоже) выполнение останавливается. Разве не должно придти null в таком случае?
Если он создан как пустой, должен сразу вернуть
Пока он не был закрыт, нельзя сказать, что в нём нет первого элемента. Потому по спеке повода возвращать null нет.
вот пример, до println не доходит даже
SharedFlow вроде никогда не бывает пустой. Это значит, он всегда будет ждать. Пустой тут значит закрытый
не бывает. он никогда не заканчивается, там просто суспендится до момента пока не придёт значение
т.е. лучше чтобы дальнейшее выполнение кода просто остановилось?
Я не знаю, что вам там лучше, зависит от задачи. К примеру, если нужно дождаться значение, first вполне подходит.
с вашим примером, да, подходит. но как мне быть, если нужно получить последнее значение из flow, чтобы вернуло null, если ничего не добавлялось?
ок, но как мне в таком случае получить null, если ничего не было добавлено во flow? firstOrNull из-за этого сейчас останавливает выполнение кода
Я пока не игрался со StateFlow/SharedFlow, но выглядит, будто для последнего можно забрать значения из свойства replayCache.
это же замена колбеку. если вы хотите получать изменения, то пожалуйста val job = launch { flow.collect { } } job.cancel() // если надо этот самый "коллбек" убрать
Обсуждают сегодня