跳到主内容

FFI 类子类型

类 '{0}' 不能扩展 '{1}'。

类 '{0}' 不能实现 '{1}'。

类 '{0}' 不能混入 '{1}'。

描述

#

当类扩展 StructUnion 以外的任何 FFI 类,或实现或混入任何 FFI 类时,分析器会生成此诊断。StructUnion 是唯一可以被子类型化的 FFI 类,且只能通过扩展它们来实现子类型化。

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

示例

#

以下代码会生成此诊断,因为类 C 扩展了 Double

dart
import 'dart:ffi';

final class C extends Double {}

常见修复

#

如果该类应该扩展 StructUnion,则修改该类的声明

dart
import 'dart:ffi';

final class C extends Struct {
  @Int32()
  external int i;
}

如果该类不应扩展 StructUnion,则删除对所有 FFI 类的引用

dart
final class C {}