跳到主要内容

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