takeWhile方法

Stream<T>takeWhile(
  1. bool test(
    1. T element
    )
)

只要test执行成功,就转发数据事件。

返回一个流,该流在此流对数据事件执行失败之前提供相同的事件。当此流完成或者首次发出使test失败的数据事件时,返回的流结束。

如果test调用返回非true值或抛出异常,则认为调用失败。如果test调用抛出异常,则错误作为返回流的最后一个事件发出。

接受元素后停止监听此流。

内部方法在这些元素之后取消其订阅。这意味着在调用此方法之后,单订阅(非广播)流将关闭且不能被重用。

如果此流是广播流,那么返回的流也是广播流。对于广播流,只有从返回流被监听的时间开始才测试事件。

示例

final stream = Stream<int>.periodic(const Duration(seconds: 1), (i) => i)
    .takeWhile((event) => event < 6);
stream.forEach(print); // Outputs events: 0, ..., 5.

实现

Stream<T> takeWhile(bool test(T element)) {
  return new _TakeWhileStream<T>(this, test);
}