length property Null safety

int length

The number of objects in this list.

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


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

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.


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);