свойство first
Первый элемент этого потока.
После получения первого элемента прослушивание этого потока прекращается.
Внутри метод отменяет подписку после получения первого элемента. Это означает, что потоки с одной подпиской (не широковещательные) закрываются и не могут быть использованы повторно после вызова этого геттера.
Если до первого события данных происходит событие ошибки, возвращаемый future завершается с этой ошибкой.
Если этот поток пуст (событие done происходит до первого события данных), возвращаемый future завершается с ошибкой.
За исключением типа ошибки, этот метод эквивалентен this.elementAt(0).
Реализация
Future<T> get first {
_Future<T> future = new _Future<T>();
StreamSubscription<T> subscription =
this.listen(null, onError: future._completeError, onDone: () {
try {
throw IterableElementError.noElement();
} catch (e, s) {
_completeWithErrorCallback(future, e, s);
}
}, cancelOnError: true);
subscription.onData((T value) {
_cancelAndValue(subscription, future, value);
});
return future;
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-async/Stream/first.html