跳到主要內容

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 語言互操作