当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart Stream.eventTransformed用法及代码示例


dart:async 库中Stream.eventTransformed 的用法介绍如下。

用法:

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

创建一个流,其中现有流的所有事件都通过sink-transformation 进行管道传输。

监听返回的流时调用给定的 mapSink 闭包。 source 中的所有事件都添加到调用返回的事件接收器中。转换将所有转换后的事件放入接收器,在其调用期间接收到 mapSink 闭包。从概念上讲,mapSink 创建一个转换管道,输入接收器是返回的EventSink,输出接收器是它接收到的接收器。

此构造函数经常用于构建转换器。

复制转换器的示例使用:

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 是,则生成的流是广播流。

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 Stream<T>.eventTransformed constructor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。