跳到主要內容

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 子句。