where 方法

Stream<T> where(
  1. bool test(
    1. T event
    )
)

从这个流中创建一个新的流,丢弃一些元素。

新的流发送与这个流相同的错误和完成事件,但它只发送满足 test 的数据事件。

如果 test 函数抛出异常,数据事件将被丢弃,并在返回的流上发出错误。

如果这个流是广播流,返回的流也是广播流。如果对广播流进行了多次监听,每个订阅都会单独执行 test

示例

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

final customStream = stream.where((event) => event > 3 && event <= 6);
customStream.listen(print); // Outputs event values: 4,5,6.

实现

Stream<T> where(bool test(T event)) {
  return new _WhereStream<T>(this, test);
}