第一个属性
此流的第一个元素。
在接收到第一个元素后停止监听此流。
内部,该方法在接收到第一个元素后取消其订阅。这意味着单订阅(非广播)流在调用此属性后将被关闭且无法重用。
如果第一个数据事件之前发生错误事件,返回的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;
}