asFlow

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

Observes changes to the RealmSet. The Flow will emit InitialSet once subscribed, and then UpdatedSet on every change to the set. 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 set.

Parameters

keyPaths

An optional list of model class properties that defines when a change to objects inside the set 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 sets containing realm objects.

Throws

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

CancellationException

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