Skip to content

Instantly share code, notes, and snippets.

@lrhn
Created February 11, 2019 12:55
Show Gist options
  • Save lrhn/71b4ac4f930b5e4ec8da22d0c8d5146e to your computer and use it in GitHub Desktop.
Save lrhn/71b4ac4f930b5e4ec8da22d0c8d5146e to your computer and use it in GitHub Desktop.
whereType transformer example
import "dart:async";
StreamTransformer<Null, T> whereType<T>() => _WhereTypeTransformer<T>();
class _WhereTypeTransformer<T> extends StreamTransformerBase<Null, T> {
Stream<T> bind(Stream<Object> stream) async* {
await for (var value in stream) if (value is T) yield value;
}
}
Stream<num> get numbers async* {
yield 1;
yield 2;
yield 2.5;
yield 3;
}
main() async {
Stream<int> integers = numbers.transform(whereType<int>());
await integers.forEach(print);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment