跳到主內容

必須_是_原生_函式_型別

提供給 '{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);
  }
}