create<T extends Struct> 静态方法

  1. @Since('3.4')
T create<T extends Struct>(
  1. [TypedData typedData,
  2. int offset]
)

typedData 中创建字节的结构视图。

创建的结构子类实例将依赖于 TypedData.offsetInBytes 加上 offset 乘以 TypedData.elementSizeInBytes 的字节。也就是说,子类声明的外部实例变量的获取器和设置器将读取从 TypedData.buffertypedData 的字节的值,从 TypedData.offsetInBytes 加上 offset 乘以 TypedData.elementSizeInBytes 开始。 typedDataTypedData.lengthInBytes 必须 足够包含结构子类的大小。重要的不是 typedData 是一个 Uint8List、一个 Float64List 或任何其他 TypedData,它只被看作是通过其 TypedData.bufferTypedData.offsetInBytesTypedData.lengthInBytes 的一个 ByteBuffer 视图。

如果省略了 typedData,在 Dart 堆上分配一个新鲜 ByteBuffer,其字节数刚好足够创建的结构的大小,并用作存储结构字段内存。

如果提供了 offset,则在 typedData 中的索引将偏移 offset 乘以 TypedData.elementSizeInBytes

示例

final class Point extends Struct {
  @Double()
  external double x;

  @Double()
  external double y;

  /// Creates Dart managed memory to hold a `Point` and returns the
  /// `Point` view on it.
  factory Point(double x, double y) {
    return Struct.create()
      ..x = x
      ..y = y;
  }

  /// Creates a [Point] view on [typedData].
  factory Point.fromTypedData(TypedData typedData) {
    return Struct.create(typedData);
  }
}

要从 Pointer 创建结构对象,请使用 StructPointer.ref

实现

@Since('3.4')
external static T create<T extends Struct>([TypedData typedData, int offset]);