asFlow

abstract fun asFlow(keyPaths: List<String>? = null): Flow<ListChange<E>>

Observes changes to the RealmList. The Flow will emit InitialList once subscribed, and then UpdatedList on every change to the list. The flow will continue running indefinitely until canceled or until the parent object is deleted.

The change calculations will run on the thread represented by RealmConfiguration.Builder.notificationDispatcher.

The flow has an internal buffer of Channel.BUFFERED but if the consumer fails to consume the elements in a timely manner the coroutine scope will be cancelled with a CancellationException.

Return

a flow representing changes to the list.

Parameters

keyPaths

An optional list of model class properties that defines when a change to objects inside the list will result in a change being emitted. Nested properties can be defined using a dotted syntax, e.g. parent.child.name. Wildcards * can be be used to capture all properties at a given level, e.g. child.* or *.*.If no keypaths are provided, changes to all top-level properties and nested properties up to 4 levels down will trigger a change. Keypaths are only supported for lists of objects.

Throws

if an invalid keypath is provided or the RealmList does not contain realm objects.

CancellationException

if the stream produces changes faster than the consumer can consume them and results in a buffer overflow.