Здесь есть несколько ошибок, но я остановлюсь на основной проблеме.
Flow
, возвращаемые room, выдают результат запроса каждый раз, когда изменяется база данных. (Это может быть ограничено изменениями таблицы, а не всей базы данных).
Поскольку база данных может измениться в любой момент в будущем, Flow
не будет (более или менее) никогда не завершится, потому что изменение всегда можно
Ваш вызов toList()
на возвращенном Flow
будет приостановлен навсегда, поскольку Flow
никогда не завершается. Это концептуально имеет смысл, поскольку Room не может предоставить вам список всех изменений, которые произойдут, не дожидаясь, пока они произойдут. Я уверен, что вы знаете, почему collect
дает вам записи, а toList()
- нет.
Вероятно, вам нужно вот это.
@Query("SELECT * FROM currency")
fun getAllCurrencies(): Flow<List<CurrencyLocalEntity>>
С этим вы можете получить первый результат запроса с помощью Flow<...>.first()
.