length property Null safety

int length
inherited

The number of objects in this list.

The valid indices for a list are 0 through length - 1.

Implementation

int get length => (_tail - _head) & (_table.length - 1);
void length= (int value)
inherited

Changes the length of this list.

If newLength is greater than the current length, entries are initialized to null. Increasing the length fails if the element type does not allow null.

Throws an UnsupportedError if the list is fixed-length or if attempting tp enlarge the list when null is not a valid element.

Implementation

set length(int value) {
  RangeError.checkNotNegative(value, "length");

  var delta = value - length;
  if (delta >= 0) {
    var needsToGrow = _table.length <= value;
    if (needsToGrow) _growTo(value);
    _tail = (_tail + delta) & (_table.length - 1);

    // If we didn't copy into a new table, make sure that we overwrite the
    // existing data so that users don't accidentally depend on it still
    // existing.
    if (!needsToGrow) fillRange(value - delta, value, _defaultValue);
  } else {
    removeRange(value, length);
  }
}