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

native_field_missing_type

このフィールドのネイティブ型を推論できませんでした。アノテーションで指定する必要があります。

説明

#

@Native アノテーションが付与されたフィールドで、ネイティブ型の推論のためにアノテーションに型ヒントが必要な場合に、アナライザーはこの診断を生成します。

intdouble のような Dart の型には、複数の可能なネイティブ表現があります。フィールドにアクセスする際に正しいロードおよびストアを生成するために、ネイティブ型はコンパイル時に知る必要があるため、明示的な型を指定する必要があります。

#

以下のコードは、フィールド f が (複数のネイティブ表現が存在する) int 型でありながら、Native アノテーションに明示的な型パラメータがないため、この診断を生成します。

dart
import 'dart:ffi';

@Native()
external int f;

一般的な修正

#

この診断を修正するには、フィールドのネイティブ宣言から正しいネイティブ表現を見つけます。次に、対応する型をアノテーションに追加します。たとえば、C で fuint8_t として宣言されていた場合、Dart のフィールドは次のように宣言する必要があります。

dart
import 'dart:ffi';

@Native<Uint8>()
external int f;

FFI の詳細については、dart:ffi を使用した C の相互運用 を参照してください。