native_field_not_static
原生字段必须是静态的。
描述
#当类的实例字段使用 @Native
注解时,分析器会产生此诊断信息。原生字段指向 C、C++ 或其他原生语言中的全局变量,而 Dart 中的实例字段则特定于类的实例。因此,原生字段必须是静态的。
有关 FFI 的更多信息,请参阅使用 dart:ffi 进行 C 语言互操作。
示例
#以下代码会产生此诊断信息,因为类 C
中的字段 f
使用了 @Native
注解,但不是 static
的
dart
import 'dart:ffi';
class C {
@Native<Int>()
external int f;
}
常见修复方法
#可以将字段设为静态
dart
import 'dart:ffi';
class C {
@Native<Int>()
external static int f;
}
或者将其移出类外部,这种情况下不需要显式的 static
修饰符
dart
import 'dart:ffi';
class C {
}
@Native<Int>()
external int f;
如果你是想注解一个属于结构体一部分的实例字段,请省略 @Native
注解
dart
import 'dart:ffi';
final class C extends Struct {
@Int()
external int f;
}