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


Dart Stream.map用法及代码示例


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

用法:

Stream<S> map<S>(
   S convert(
   T event   
)   
)

将此流的每个元素转换为新的流事件。

创建一个新流,使用convert 函数将此流的每个元素转换为新值,并发出结果。

对于此流中的每个数据事件 o ,返回的流会提供一个值为 convert(o) 的数据事件。如果 convert 抛出,则返回的流将其报告为错误事件。

错误和完成事件原封不动地传递给返回的流。

如果此流是,则返回的流是广播流。 convert 函数在每个侦听器的每个数据事件中调用一次。如果多次收听广播流,则每个订阅将在每个数据事件上单独调用convert

transform 不同,此方法不会将流视为单个值的块。相反,每个事件都独立于之前和之后的事件进行转换,这可能并不总是正确的。例如,如果代理对或多字节 UTF-8 编码被拆分为单独的事件,并且尝试独立地对这些事件进行编码或解码,则 UTF-8 编码或解码将给出错误的结果。

例子:

final stream =
    Stream<int>.periodic(const Duration(seconds: 1), (count) => count)
        .take(5);

final calculationStream =
    stream.map<String>((event) => 'Square: ${event * event}');
calculationStream.forEach(print);
// Square: 0
// Square: 1
// Square: 4
// Square: 9
// Square: 16

相关用法


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