length property
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 => value.length;
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 newLength) {
if (newLength == value.length) return;
final originalLength = value.length;
value.length = newLength;
final events = <int, E>{};
void addEvent(int index) {
events.addAll(<int, E>{index: value[index]});
notifyChangeListeners(CollectionChangeEvent(
CollectionEventType.addition, index, value[index]));
}
if (newLength > originalLength) {
for (var i = 0; i < newLength - originalLength; i++) {
addEvent(originalLength + i);
}
} else if (newLength < originalLength) {
for (var i = originalLength - newLength; i > 0; i++) {
addEvent(originalLength - i);
}
}
if (events.isNotEmpty) {
notifyEventListeners(
CollectionEvent(CollectionEventType.addition, events));
}
notifyListeners(value);
}