useStreamSubscription<T> function
void
useStreamSubscription<T>(})
Subscribes to a Stream and automatically cancels the subscription when the widget is unmounted.
Parameters:
stream: The Stream to subscribe toonData: Optional callback called when data is emittedonError: Optional callback called when an error occursonDone: Optional callback called when the stream completescancelOnError: Whether to cancel the subscription on error (default: false)
Example:
final controller = StreamController<int>();
useStreamSubscription(
controller.stream,
onData: (value) {
print('Received: $value');
},
onError: (error, stackTrace) {
print('Error: $error');
},
onDone: () {
print('Stream completed');
},
);
controller.add(42);
Implementation
void useStreamSubscription<T>(
Stream<T> stream,
void Function(T event)? onData, {
Function? onError,
void Function()? onDone,
bool? cancelOnError,
}) {
useMemoized(() {
return stream.listen(
onData,
onError: onError,
onDone: onDone,
cancelOnError: cancelOnError,
);
}, (subscription) => subscription.cancel());
}