Int32List.sublistView constructor
- @Since("2.8")
Creates an Int32List view on a range of elements of data
.
Creates a view on the range of data.buffer
which corresponds
to the elements of data
from start
until end
.
If data
is a typed data list, like Uint16List, then the view is on
the bytes of the elements with indices from start
until end
.
If data
is a ByteData, it's treated like a list of bytes.
If provided, start
and end
must satisfy
0 ≤ start
≤ end
≤ elementCount
where elementCount is the number of elements in data
, which
is the same as the List.length of a typed data list.
If omitted, start
defaults to zero and end
to elementCount.
The start and end indices of the range of bytes being viewed must be multiples of four.
Implementation
@Since("2.8")
factory Int32List.sublistView(TypedData data, [int start = 0, int? end]) {
int elementSize = data.elementSizeInBytes;
end = RangeError.checkValidRange(
start, end, data.lengthInBytes ~/ elementSize);
int byteLength = (end - start) * elementSize;
if (byteLength % bytesPerElement != 0) {
throw ArgumentError("The number of bytes to view must be a multiple of " +
"$bytesPerElement");
}
return data.buffer.asInt32List(data.offsetInBytes + start * elementSize,
byteLength ~/ bytesPerElement);
}