Skip to content

Instantly share code, notes, and snippets.

@simolus3
Created May 24, 2021 16:38
Show Gist options
  • Save simolus3/3577b11c6acfb12d1cce645380e6a420 to your computer and use it in GitHub Desktop.
Save simolus3/3577b11c6acfb12d1cce645380e6a420 to your computer and use it in GitHub Desktop.
class _SyncProxyStream<T> extends Stream<T> {
final Stream<T> _inner;
_SyncProxyStream(this._inner);
@override
bool get isBroadcast => _inner.isBroadcast;
@override
StreamSubscription<T> listen(void Function(T event)? onData,
{Function? onError, void Function()? onDone, bool? cancelOnError}) {
final inner = _inner.listen(onData,
onError: onError, onDone: onDone, cancelOnError: cancelOnError);
return _SyncProxyStreamSubscription(inner);
}
}
class _SyncProxyStreamSubscription<T> extends StreamSubscription<T> {
final StreamSubscription<T> _inner;
_SyncProxyStreamSubscription(this._inner);
@override
Future<E> asFuture<E>([E? futureValue]) {
return _inner.asFuture(futureValue);
}
@override
Future<void> cancel() {
return _inner.cancel();
}
@override
bool get isPaused => _inner.isPaused;
@override
void onData(void Function(T data)? handleData) {
_inner.onData(handleData);
}
@override
void onDone(void Function()? handleDone) {
_inner.onDone(handleDone);
}
@override
void onError(Function? handleError) {
_inner.onError(handleError);
}
@override
void pause([Future<void>? resumeSignal]) {
_inner.pause(resumeSignal);
}
@override
void resume() {
_inner.resume();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment