map<S> 方法
- S convert(
- T event
将此流中的每个元素转换为新的流事件。
创建一个新的流,使用 convert
函数将此流的每个元素转换为新的值,并发出结果。
对于此流中的每个数据事件 o
,返回的流提供一个具有值 convert(o)
的数据事件。如果 convert
抛出异常,则返回的流会将其报告为错误事件。
错误和完成事件以不变的方式传递到返回的流中。
如果此流是广播流,则返回的流也是广播流。《code>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
实现
Stream<S> map<S>(S convert(T event)) {
return new _MapStream<T, S>(this, convert);
}