第一个属性

Future<T> first

该流的第一个元素。

在接收到第一个元素后停止监听该流。

在内部,该方法在接收第一个元素后取消其订阅。这意味着单一订阅(非广播)的流在调用此属性之后将被关闭且不能被再次使用。

如果在第一个数据事件之前发生错误事件,返回的 future 将以那个错误完成。

如果该流为空(在第一个数据事件之前发生完成事件),返回的 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;
}