跳到主内容

必须_是_原生_函数_类型

提供给 '{1}' 的类型 '{0}' 必须是有效的 'dart:ffi' 原生函数类型。

描述

#

Pointer.fromFunctionDynamicLibrary.lookupFunctionNativeCallable 构造函数的调用中,其类型参数(无论是显式的还是推断的)不是原生函数类型时,分析器会生成此诊断信息。

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