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