insert method

  1. @override
void insert(
  1. int index,
  2. E element
)
override

Inserts element at position index in this list.

This increases the length of the list by one and shifts all objects at or after the index towards the end of the list.

The list must be growable. The index value must be non-negative and no greater than length.

final numbers = <int>[1, 2, 3, 4];
const index = 2;
numbers.insert(index, 10);
print(numbers); // [1, 2, 10, 3, 4]

Implementation

@override
void insert(int index, E element) {
  if (index == length) {
    add(element);
    return;
  }
  // We are modifying the length just below these checks. Without the checks
  // Array.copy could throw an exception, leaving the list in a bad state
  // (with a length that has been increased, but without a new element).
  if (index is! int) throw ArgumentError(index);
  RangeError.checkValidIndex(index, this);
  _list
    // Increase the length by adding [element], in case [E] isn't nullable.
    ..add(element)
    ..setRange(index + 1, length, this, index);

  _notifyChangeLength(_list.length - 1, _list.length);
  if (hasListObservers) {
    _notifyListChange(index, addedCount: 1);
  }
  _list[index] = element;
}