argument_must_be_native
「Native.addressOf」への引数には「@Native」アノテーションが必要です。
説明
#Native.addressOf に渡された引数が Native アノテーションで注釈されていない場合に、アナライザーはこの診断を生成します。
例
#次のコードは、addressOf への引数がフィールドではなく文字列であるため、この診断を生成します。文字列にはアノテーションを付けることはできません。
dart
import 'dart:ffi';
@Native<Void Function()>()
external void f();
void g() {
print(Native.addressOf('f'));
}次のコードは、関数 f が addressOf に渡されていますが、Native として注釈が付けられていないため、この診断を生成します。
dart
import 'dart:ffi';
external void f();
void g() {
print(Native.addressOf<NativeFunction<Void Function()>>(f));
}一般的な修正
#引数がフィールドでも関数でもない場合は、Native で注釈が付けられたフィールドまたは関数で引数を置き換えてください。
dart
import 'dart:ffi';
@Native<Void Function()>()
external void f();
void g() {
print(Native.addressOf<NativeFunction<Void Function()>>(f));
}引数がフィールドまたは関数のいずれかである場合は、フィールドまたは関数に Native で注釈を付けてください。
dart
import 'dart:ffi';
@Native<Void Function()>()
external void f();
void g() {
print(Native.addressOf<NativeFunction<Void Function()>>(f));
}