useStream<T> function

AsyncSnapshotStreamSignal<T> useStream<T>(
  1. Stream<T>? stream, {
  2. T? initialData,
})

Creates a reactive signal that tracks the state of a Stream.

This hook provides an AsyncSnapshot that updates automatically as the Stream emits data, errors, or completes. The behavior matches StreamBuilder.

Parameters:

  • stream: The Stream to track, can be null
  • initialData: Optional initial data to use before the Stream emits

Example:

final controller = StreamController<int>();
final snapshot = useStream(controller.stream);

if (snapshot.connectionState == ConnectionState.waiting) {
  return CircularProgressIndicator();
} else if (snapshot.hasError) {
  return Text('Error: ${snapshot.error}');
} else {
  return Text('Data: ${snapshot.data}');
}

// Later, emit data
controller.add(42);

Implementation

AsyncSnapshotStreamSignal<T> useStream<T>(Stream<T>? stream, {T? initialData}) {
  return useAutoDispose<_AsyncSnapshotStreamSignalImpl<T>>(() {
    final signal = _AsyncSnapshotStreamSignalImpl<T>(
      stream,
      initialData: initialData,
    );
    return signal;
  });
}