description

# elementAt method Null safety

Future<T> elementAt (

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