elementAt method
- int index
Returns the value of the index
th data event of this stream.
Stops listening to this stream after the index
th data event has been received.
Internally the method cancels its subscription after these elements. This means that single-subscription (non-broadcast) streams are closed and cannot be reused after a call to this method.
If an error event occurs before the value is found, the future completes with this error.
If a done event occurs before the value is found, the future completes with a RangeError.
Implementation
Future<T> elementAt(int index) { RangeError.checkNotNegative(index, "index"); _Future<T> result = new _Future<T>(); int elementIndex = 0; StreamSubscription<T> subscription; subscription = this.listen(null, onError: result._completeError, onDone: () { result._completeError( new RangeError.index(index, this, "index", null, elementIndex), StackTrace.empty); }, cancelOnError: true); subscription.onData((T value) { if (index == elementIndex) { _cancelAndValue(subscription, result, value); return; } elementIndex += 1; }); return result; }
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dart.dev/stable/2.13.0/dart-async/Stream/elementAt.html