isEmpty 属性

Future<bool> isEmpty

此 Stream 是否包含任何元素。

等待此 Stream 的第一个元素,然后使用 false 完成返回的 future。如果此 Stream 结束且未发出任何元素,则返回的 future 以 true 完成。

如果第一个事件是一个错误,则返回的 future 以该错误完成。

此操作会监听此 Stream,并且检查过是否为空后,非广播流不能重复使用。

实现

Future<bool> get isEmpty {
  _Future<bool> future = new _Future<bool>();
  StreamSubscription<T> subscription =
      this.listen(null, onError: future._completeError, onDone: () {
    future._complete(true);
  }, cancelOnError: true);
  subscription.onData((_) {
    _cancelAndValue(subscription, future, false);
  });
  return future;
}