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 Stream.multi用法及代码示例
- Dart Stream.fromFutures用法及代码示例
- Dart Stream.fold用法及代码示例
- Dart Stream.asBroadcastStream用法及代码示例
- Dart Stream.handleError用法及代码示例
- Dart Stream.where用法及代码示例
- Dart Stream.reduce用法及代码示例
- Dart Stream.join用法及代码示例
- Dart Stream.error用法及代码示例
- Dart Stream.periodic用法及代码示例
- Dart Stream.take用法及代码示例
- Dart Stream.every用法及代码示例
- Dart Stream.lastWhere用法及代码示例
- Dart Stream.contains用法及代码示例
- Dart Stream.eventTransformed用法及代码示例
- Dart Stream.firstWhere用法及代码示例
- Dart Stream.drain用法及代码示例
- Dart Stream.empty用法及代码示例
- Dart Stream.distinct用法及代码示例
- Dart Stream.timeout用法及代码示例
- Dart Stream.transform用法及代码示例
- Dart Stream.singleWhere用法及代码示例
- Dart Stream.fromFuture用法及代码示例
- Dart Stream.skipWhile用法及代码示例
- Dart Stream.skip用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 map<S> method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。