Whether this stream contains any elements.
Waits for the first element of this stream, then completes the returned
future with true.
If this stream ends without emitting any elements, the returned future is
completed with false.
If the first event is an error, the returned future is completed with that error.
This operation listens to this stream, and a non-broadcast stream cannot be reused after checking whether it is empty.
Future<bool> get isEmpty {
_Future<bool> future = new _Future<bool>();
StreamSubscription subscription;
subscription = this.listen(
(_) {
_cancelAndValue(subscription, future, false);
},
onError: future._completeError,
onDone: () {
future._complete(true);
},
cancelOnError: true);
return future;
}