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;
}