Struct抽象 基类

所有 FFI 结构体类型的超类型。

FFI 结构体类型应扩展此类并声明与底层原生结构相对应的字段。

Struct 子类声明中的字段声明会自动提供设置器和获取器实现,该实现通过内存访问原生结构体的字段。

Struct 子类声明中的所有字段声明必须具有类型 intdouble 并使用表示原生类型的 NativeType 进行注解,或者必须是类型 PointerArrayStructUnion 的子类型。例如

typedef struct {
 int a;
 float b;
 void* c;
} my_struct;
final class MyStruct extends Struct {
  @Int32()
  external int a;

  @Float()
  external double b;

  external Pointer<Void> c;
}

Struct 子类的字段声明 必须 被标记为 external。结构体子类直接指向原生内存(Pointer)或 Dart 内存(TypedData)中的位置,外部字段的获取器和设置器实现直接从该位置读取和写入适当的偏移量处的字节。这不允许存在非原生字段。

结构体子类的实例不能使用生成构造函数创建。相反,可以通过 StructPointer.refStruct.create、FFI 调用返回值、FFI 回调参数、StructArray 和访问 Struct 字段来创建实例。要创建由原生内存支持的实例,请使用 StructPointer.ref。要创建由 Dart 内存支持的实例,请使用 Struct.create

实现类型
可用的扩展
注解
  • @Since('2.12')

构造函数

Struct()
创建对 nullptr 的引用。

属性

hashCode int
此对象的哈希码。
无设置器继承
runtimeType Type
对象的运行时类型表示。
无设置器继承

方法

noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时被调用。
继承
toString() String
此对象的字符串表示形式。
继承

运算符

operator ==(Object other) bool
相等运算符。
继承

静态方法

create<T extends Struct>([TypedData typedData, int offset]) → T
typedData 中创建字节的结构视图。