insert method
Inserts an element into the iterable at the specified index.
Takes the specified element and inserts it into the iterable at the
position index
.
If index
is less than zero, an ArgumentError is thrown.
If iteration of the underlying iterable is exausted before the position index
is reached, a RangeError is thrown.
Implementation
Iterable<T> insert(int index, T value) sync* {
if (index == 0) {
yield* prepend(value);
return;
}
if (index < 0) {
throw ArgumentError('Parameter "index" must be greater than zero.');
}
final iterator = this.iterator;
var i = 0;
while (iterator.moveNext()) {
if (i == index) {
yield value;
}
yield iterator.current;
i++;
}
if (index >= i) {
throw RangeError.index(index, this, null, null, i);
}
}