跳到主要内容

native_field_missing_type

无法推断此字段的原生类型,必须在注解中指定。

描述

#

当一个使用 @Native 注解的字段需要在注解上提供类型提示才能推断原生类型时,分析器会产生此诊断。

intdouble 这样的 Dart 类型可能对应多种原生表示。由于访问字段时需要编译时知道原生类型以生成正确的加载和存储指令,因此必须提供一个显式类型。

示例

#

以下代码会产生此诊断,因为字段 f 的类型是 int(存在多种原生表示),但在 Native 注解上没有显式类型参数。

dart
import 'dart:ffi';

@Native()
external int f;

常见修复

#

要修复此诊断,请从字段的原生声明中找出正确的原生表示。然后,将对应的类型添加到注解中。例如,如果 f 在 C 语言中声明为 uint8_t,则 Dart 字段应声明为

dart
import 'dart:ffi';

@Native<Uint8>()
external int f;

有关 FFI 的更多信息,请参阅 使用 dart:ffi 进行 C 语言互操作