Первое свойство
Future<T> firstВозвращает первый элемент потока.
Прекращает прослушивание потока после получения первого элемента.
Внутренне метод отменяет свою подписку после получения первого элемента. Это означает, что потоки с однократной подпиской (не широковещательные) закрываются и не могут быть повторно использованы после вызова этого свойства.
Если возникает ошибка до появления первого события данных, результирующее будущее завершается этой ошибкой.
Если этот поток пустой (событие завершения происходит до первого события данных), результирующее будущее завершается ошибкой StateError.
За исключением типа ошибки, этот метод эквивалентен this.elementAt(0).
Исходный код
Future<T> get first {
_Future<T> future = new _Future<T>();
StreamSubscription subscription;
subscription = this.listen(
(T value) {
_cancelAndValue(subscription, future, value);
},
onError: future._completeError,
onDone: () {
try {
throw IterableElementError.noElement();
} catch (e, s) {
_completeWithErrorCallback(future, e, s);
}
},
cancelOnError: true);
return future;
}
© 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/first.html