useStream<T> function
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 nullinitialData: 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;
});
}