ByteData.sublistView constructor Null safety

  1. @Since("2.8")
ByteData.sublistView(
  1. TypedData data,
  2. [int start = 0,
  3. int? end]
)

Creates a ByteData 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 ≤ startendelementCount

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.

Implementation

@Since("2.8")
factory ByteData.sublistView(TypedData data, [int start = 0, int? end]) {
  int elementSize = data.elementSizeInBytes;
  end = RangeError.checkValidRange(
      start, end, data.lengthInBytes ~/ elementSize);
  if (end == null)
    throw "unreachable"; // TODO(38725): Remove when promotion works.
  return data.buffer.asByteData(
      data.offsetInBytes + start * elementSize, (end - start) * elementSize);
}