Метод distinct
Stream<T> distinct(Пропускает события данных, если они равны предыдущему событию данных.
Возвращаемый поток предоставляет те же события, что и этот поток, за исключением того, что он никогда не предоставляет два последовательных события данных, которые равны. То есть ошибки передаются в возвращаемый поток, а события данных передаются, если они отличаются от самого последнего отправленного события данных.
Равенство определяется предоставленным equals методом. Если он опущен, используется оператор '==' для последнего предоставленного элемента данных.
Если equals выбрасывает исключение, событие данных заменяется событием ошибки, содержащим сгенерированное исключение. Поведение эквивалентно поведению исходного потока, который отправляет событие ошибки.
Возвращаемый поток является потоком с широковещательной рассылкой, если таковым является исходный поток. Если за потоком с широковещательной рассылкой подключается более одного слушателя, каждый из них будет индивидуально выполнять проверку equals.
Исходный код
Stream<T> distinct([bool equals(T previous, T next)]) {
return new _DistinctStream<T>(this, equals);
}
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-async/Stream/distinct.html