跳到主要內容

native_function_missing_type

此函式的原生型別無法推斷,因此必須在註解中指定。

描述

#

當帶有 @Native 註解的函式需要在註解中提供型別提示來推斷原生函式型別時,分析器會產生此診斷。

intdouble 等 Dart 型別可能有多種原生表示。由於需要在編譯時知道原生型別才能為函式生成正確的繫結和呼叫指令,因此必須給出顯式型別。

有關 FFI 的更多資訊,請參閱 使用 dart:ffi 進行 C 互操作

示例

#

以下程式碼會產生此診斷,因為函式 f() 的返回型別是 int,但在 Native 註解上沒有顯式型別引數

dart
import 'dart:ffi';

@Native()
external int f();

常見修復

#

將相應的型別新增到註解中。例如,如果在 C 中宣告 f() 返回 int32_t,則 Dart 函式應宣告為

dart
import 'dart:ffi';

@Native<Int32 Function()>()
external int f();