native_field_invalid_type
'{0}' 是原生欄位不支援的型別。原生欄位僅支援指標、陣列或數字和複合型別。
描述
#當帶有 @Native 註解的欄位具有原生欄位不支援的型別時,分析器會生成此診斷資訊。
原生欄位支援指標、陣列、數字型別以及 Compound 的子型別(即結構體或聯合體)。NativeType 的其他子型別,例如 Handle 或 NativeFunction,不允許作為原生欄位。
原生函式應與外部函式一起使用,而不是外部欄位。
不支援 Handle,因為無法透明地將 Dart 物件載入和儲存到指標中。
有關 FFI 的更多資訊,請參閱 使用 dart:ffi 進行 C 互操作。
示例
#以下程式碼會生成此診斷資訊,因為欄位 free 使用了不支援的原生型別 NativeFunction
dart
import 'dart:ffi';
@Native<NativeFunction<Void Function()>>()
external void Function() free;常見修復方法
#如果您想使用 NativeFunction 欄位繫結到現有的原生函式,請改用 @Native 方法
dart
import 'dart:ffi';
@Native<Void Function(Pointer<Void>)>()
external void free(Pointer<Void> ptr);要在 C 中繫結到儲存函式指標的欄位,請為 Dart 欄位使用指標型別
dart
import 'dart:ffi';
@Native()
external Pointer<NativeFunction<Void Function(Pointer<Void>)>> free;