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;
}