跳到主要内容

mixin_class_declaration_extends_not_object

类 '{0}' 不能声明为 mixin,因为它扩展了一个非 'Object' 的类。

描述

#

当一个带有 mixin 修饰符的类扩展了一个非 Object 的类时,分析器会生成此诊断消息。mixin 类不能有非 Object 的超类。

示例

#

以下代码会生成此诊断消息,因为带有 mixin 修饰符的类 B 扩展了 A

dart
class A {}

mixin class B extends A {}

常见修复方法

#

如果您想将该类用作 mixin,请将其超类更改为 Object,无论是显式声明还是通过移除 extends 子句。

dart
class A {}

mixin class B {}

如果该类需要具有非 Object 的超类,则移除 mixin 修饰符。

dart
class A {}

class B extends A {}

如果您既需要一个 mixin 又需要一个非 Object 类的子类,则将子类的成员移至新的 mixin 中,从子类中移除 mixin 修饰符,然后将新的 mixin 应用于该子类。

dart
class A {}

class B extends A with M {}

mixin M {}

根据子类的成员,这可能需要在 mixin 中添加一个 on 子句。