native_field_not_static
ネイティブフィールドはstaticである必要があります。
説明
#インスタンスフィールドが@Nativeアノテーションが付与されているクラスで、アナライザーはこの診断を生成します。ネイティブフィールドはC、C++、またはその他のネイティブ言語のグローバル変数を示しますが、Dartのインスタンスフィールドはクラスのインスタンスに固有です。したがって、ネイティブフィールドはstaticである必要があります。
FFI の詳細については、dart:ffi を使用した C の相互運用 を参照してください。
例
#以下のコードは、クラスCのフィールドfが@Nativeであるがstaticではないため、この診断を生成します。
dart
import 'dart:ffi';
class C {
@Native<Int>()
external int f;
}一般的な修正
#フィールドをstaticにする
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;
}