creation_of_struct_or_union
'Struct' 和 'Union' 的子类由原生内存支持,不能通过生成式构造函数实例化。
描述
#当使用生成式构造函数实例化 Struct
或 Union
的子类时,分析器会生成此诊断。
有关 FFI 的更多信息,请参阅 使用 dart:ffi 进行 C 语言互操作。
示例
#以下代码会产生此诊断,因为类 C
正在使用生成式构造函数进行实例化
dart
import 'dart:ffi';
final class C extends Struct {
@Int32()
external int a;
}
void f() {
C();
}
常见修复方法
#如果您需要分配类描述的结构体,请使用 ffi
包进行操作
dart
import 'dart:ffi';
import 'package:ffi/ffi.dart';
final class C extends Struct {
@Int32()
external int a;
}
void f() {
final pointer = calloc.allocate<C>(4);
final c = pointer.ref;
print(c);
calloc.free(pointer);
}