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