跳到主要內容

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