必须_是_原生_函数_类型
提供给 '{1}' 的类型 '{0}' 必须是有效的 'dart:ffi' 原生函数类型。
描述
#当 Pointer.fromFunction
、DynamicLibrary.lookupFunction
或 NativeCallable
构造函数的调用中,其类型参数(无论是显式的还是推断的)不是原生函数类型时,分析器会生成此诊断信息。
有关 FFI 的更多信息,请参阅 使用 dart:ffi 进行 C 互操作。
示例
#以下代码会生成此诊断信息,因为类型 T
可以是 Function
的任何子类,但 fromFunction
的类型参数要求是原生函数类型
dart
import 'dart:ffi';
int f(int i) => i * 2;
class C<T extends Function> {
void g() {
Pointer.fromFunction<T>(f, 0);
}
}
常见修复
#在调用中将原生函数类型用作类型参数
dart
import 'dart:ffi';
int f(int i) => i * 2;
class C<T extends Function> {
void g() {
Pointer.fromFunction<Int32 Function(Int32)>(f, 0);
}
}