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

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

次のコードは、関数 faddressOf に渡されていますが、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));
}