跳到主要内容

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