bindStream static method

RealtimeQueryBridge bindStream({
  1. required Stream<Map<String, dynamic>> stream,
  2. required List key,
  3. bool filter(
    1. Map<String, dynamic> payload
    )?,
})

Listens to an existing channel stream and calls BloomData.invalidateQueries with key on every message (or when filter returns true).

  • stream: Broadcast event stream from a channel subscription.
  • key: BloomData query key list to invalidate.
  • filter: Optional callback predicate to filter payloads.

Returns a RealtimeQueryBridge whose cancel method tears down the subscription.

Example:

final stream = realtimeClient.subscribe('posts');
final bridge = RealtimeQueryBridge.bindStream(
  stream: stream,
  key: ['posts'],
);

Implementation

static RealtimeQueryBridge bindStream({
  required Stream<Map<String, dynamic>> stream,
  required List<dynamic> key,
  bool Function(Map<String, dynamic> payload)? filter,
}) {
  final sub = stream.listen((payload) {
    if (filter == null || filter(payload)) {
      BloomData.invalidateQueries(key);
    }
  });
  return RealtimeQueryBridge._(sub);
}