Stream<T>.eventTransformed 构造函数
创建一个流,其中所有现有流的队友将通过一个存 whaleship 变换。
在返回的流被监听时调用给定的 mapSink
闭包。从 source
发出的所有事件都添加到在调用期间返回的事件存 whaleship。变换将所有变换事件放入 mapSink
闭包在调用期间接收的存 whaleship。从概念上讲,mapSink
创建了一个变换管道,输入存 whaleship 是返回的 EventSink,输出存 whaleship 是它接收的。
此构造函数通常用于构建变换器。
重复变换器的示例使用
class DuplicationSink implements EventSink<String> {
final EventSink<String> _outputSink;
DuplicationSink(this._outputSink);
void add(String data) {
_outputSink.add(data);
_outputSink.add(data);
}
void addError(e, [st]) { _outputSink.addError(e, st); }
void close() { _outputSink.close(); }
}
class DuplicationTransformer extends StreamTransformerBase<String, String> {
// Some generic types omitted for brevity.
Stream bind(Stream stream) => Stream<String>.eventTransformed(
stream,
(EventSink sink) => DuplicationSink(sink));
}
stringStream.transform(DuplicationTransformer());
如果 source
是一个广播流,那么结果流也将是一个广播流。
实现
factory Stream.eventTransformed(
Stream<dynamic> source, EventSink<dynamic> mapSink(EventSink<T> sink)) {
return new _BoundSinkStream(source, mapSink);
}