void insertAll (int index, Iterable<E> iterable) inherited
void insertAll(int index, Iterable<E> iterable) { RangeError.checkValueInInterval(index, 0, length, "index"); if (index == length) { addAll(iterable); return; } if (iterable is! EfficientLengthIterable || identical(iterable, this)) { iterable = iterable.toList(); } int insertionLength = iterable.length; if (insertionLength == 0) { return; } // There might be errors after the length change, in which case the list // will end up being modified but the operation not complete. Unless we // always go through a "toList" we can't really avoid that. int oldLength = length; for (int i = oldLength - insertionLength; i < oldLength; ++i) { add(this[i > 0 ? i : 0]); } if (iterable.length != insertionLength) { // If the iterable's length is linked to this list's length somehow, // we can't insert one in the other. this.length -= insertionLength; throw ConcurrentModificationError(iterable); } int oldCopyStart = index + insertionLength; if (oldCopyStart < oldLength) { setRange(oldCopyStart, oldLength, this, index); } setAll(index, iterable); }