Stream<T>.eventTransformed 构造函数

Stream<T>.eventTransformed(
  1. Stream source,
  2. EventSink mapSink(
    1. EventSink<T> sink
    )
)

创建一个流,其中所有现有流的队友将通过一个存 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);
}