length property Null safety
inherited
The number of objects in this list.
The valid indices for a list are 0
through length - 1
.
final numbers = <int>[1, 2, 3];
print(numbers.length); // 3
Implementation
@override
int get length => (_tail - _head) & (_table.length - 1);
inherited
Setting the length
changes the number of elements in the list.
The list must be growable.
If newLength
is greater than current length,
new entries are initialized to null
,
so newLength
must not be greater than the current length
if the element type E
is non-nullable.
final maybeNumbers = <int?>[1, null, 3];
maybeNumbers.length = 5;
print(maybeNumbers); // [1, null, 3, null, null]
maybeNumbers.length = 2;
print(maybeNumbers); // [1, null]
final numbers = <int>[1, 2, 3];
numbers.length = 1;
print(numbers); // [1]
numbers.length = 5; // Throws, cannot add `null`s.
Implementation
@override
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);
}
}