メインコンテンツにスキップ

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