Метод 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);
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-async/Stream/distinct.html