description

# Int32x4List.sublistView constructor Null safety

1. @Since("2.8")

Int32x4List.sublistView(

1. TypedData data,
2. [int start = 0,
3. int? end]

)

Creates an Int32x4List 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 sixteen.

## Implementation

    @Since("2.8")
    factory Int32x4List.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)
      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.asInt32x4List(data.offsetInBytes + start * elementSize,
          byteLength ~/ bytesPerElement);
    }