所有 FFI 结构类型的超类型。
FFI 结构类型应扩展此类并声明与底层原生结构相对应的字段。
Struct 子类声明中的字段声明将自动提供设置器(setter)和获取器(getter)实现,以访问内存中的原生结构字段。
Struct 子类声明中的所有字段声明都必须是类型 int 或 double,并使用表示原生类型的 NativeType 进行注释,或者必须是类型 Pointer、Array、Struct 或 Union 的子类型。例如
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
。Struct 子类直接指向原生内存中的位置(Pointer)或 Dart 内存(TypedData),外部字段的获取器和设置器实现直接从该位置读取和写入适当的字节。这不允许存在非原生字段。
Struct 子类的实例不能用生成性构造函数创建。相反,可以由 StructPointer.ref、Struct.create、FFI 调用返回值、FFI 回调参数、StructArray 和访问 Struct 字段来创建实例。要创建由原生内存支持的实例,请使用 StructPointer.ref。要创建由 Dart 内存支持的实例,请使用 Struct.create。
- 实现类型
- 注释
-
- @Since('2.12')
构造函数
属性
- hashCode → int
- 该对象的哈希码。无设置器继承
- runtimeType → Type
- 表示对象运行时类型的表示。无设置器继承
方法
-
noSuchMethod(
Invocation invocation) → dynamic - 当访问不存在的方法或属性时调用。继承
-
toString(
) → String - 该对象字符串表示。继承
操作符
-
operator ==(
Object other) → bool - 等式操作符。继承