kotlin-extensions / io.realm.kotlin / io.realm.RealmList / toFlow

toFlow

fun <T> RealmList<T>.toFlow(): Flow<RealmList<T>>

Retorna um fluxo que monitora alterações nesta RealmList. Ele emitirá o RealmResults atual quando for inscrito. As atualizações do RealmList serão emitidas continuamente à medida que o RealmList é atualizado - onCompletion nunca será chamado.

Os itens emitidos dos fluxos de Realm são congelados — consulte RealmList.freeze. Isso significa que eles são imutáveis e podem ser lidos em qualquer thread.

Os fluxos de domínio sempre emitem itens do thread que contém a Realm ativa. Isso significa que, se você precisar fazer processamento adicional, é recomendável coletar os valores em um despachante de computação:

list.toFlow()
  .map { list -> doExpensiveWork(list) }
  .flowOn(Dispatchers.IO)
  .onEach { flowList ->
    // ...
  }.launchIn(Dispatchers.Main)

Se quiser que toFlow() pare de emitir itens, você pode instruir o fluxo a emitir apenas o primeiro item ligando para kotlinx.coroutines.flow.first:

val foo = list.toFlow()
  .flowOn(context)
  .first()

Return
Kotlin Flow em quais chamadas para onEach ou collect podem ser feitas.