subtype_of_sealed_class
类 '{0}' 不应被扩展(extend)、混入(mixin)或实现(implement),因为它是一个密封类。
描述
#当密封类(即带有 sealed
注解或继承/混入了密封类的类)在类或 mixin 声明的 extends
, implements
或 with
子句中被引用,并且该声明与密封类不在同一个包中时,分析器会生成此诊断信息。
示例
#假设有一个库,位于正在分析的包之外,其中包含以下内容
dart
import 'package:meta/meta.dart';
class A {}
@sealed
class B {}
以下代码会生成此诊断信息,因为类 C
扩展了密封类 B
,而 C
与 B
不在同一个包中。
dart
import 'package:a/a.dart';
class C extends B {}
常见修复方法
#如果该类不需要成为密封类的子类型,则修改声明使其不成为其子类型。
dart
import 'package:a/a.dart';
class B extends A {}
如果该类需要成为密封类的子类型,那么或者修改密封类使其不再是密封类,或者将该子类移动到与密封类相同的包中。