fun <T> RealmList<T>.toChangesetFlow(): Flow<CollectionChange<RealmList<T>>>
Retorna um fluxo que monitora alterações nesta RealmList. Ele emitirá a RealmList atual após a inscrição. Para cada atualização no RealmList, uma CollectionChange que consiste em um par com o RealmList e seu OrderedCollectionChangeSet correspondente será enviado. O changeset será null
na primeira vez que a RealmList for emitida.
A RealmList será emitida continuamente à medida que for atualizada. Esse fluxo nunca será concluído.
Os itens emitidos são congelados (consulte RealmList.freeze). Isso significa que eles são imutáveis e podem ser lidos em qualquer thread.
Os fluxos de Realm sempre emitem itens do thread que contém o Realm. Isso significa que, se você precisar fazer processamento adicional, é recomendável coletar os valores em um despachante de computação:
list.toChangesetFlow()
.map { change -> doExpensiveWork(change) }
.flowOn(Dispatchers.IO)
.onEach { change ->
// ...
}.launchIn(Dispatchers.Main)
Se quiser que toChangesetFlow()
pare de emitir itens, você pode instruir o fluxo a emitir apenas o primeiro item ligando para kotlinx.coroutines.flow.first:
val foo = list.toChangesetFlow()
.flowOn(context)
.first()
UnsupportedOperationException
- se a estrutura de corrotinas necessária não estiver no caminho de classe ou se a Instância de Realm correspondente não suportar fluxos.
IllegalStateException
- se o Realm não tiver sido aberto em uma thread do loop de eventos.
Return
Kotlin Flow que nunca será concluído.