distinct 方法
- [bool equals(
- T previous,
- T next
忽略如果数据事件与前一个数据事件相同的情况。
返回的流提供了与该流相同的事件,但从不提供两个连续相同的数据事件。也就是说,错误会被传递到返回的流中,如果数据事件与前一个最刚发出的事件不同,则也会传递数据事件。
相等性是通过提供的 equals
方法确定的。如果省略,则使用最后一个提供的数据元素的 '==' 操作符。
如果 equals
抛出异常,数据事件会被替换为一个包含抛出错误的错误事件。其行为与原始流发出错误事件相同,并且不会改变最近发出的数据事件。
如果该流是广播流,则返回的流也是广播流。如果对广播流进行了多次监听,每个订阅都将单独执行 equals
测试。
示例
final stream = Stream.fromIterable([2, 6, 6, 8, 12, 8, 8, 2]).distinct();
stream.forEach(print); // Outputs events: 2,6,8,12,8,2.
实现
Stream<T> distinct([bool equals(T previous, T next)?]) {
return new _DistinctStream<T>(this, equals);
}