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 {}如果该类需要成为密封类的子类型,那么或者修改密封类使其不再是密封类,或者将该子类移动到与密封类相同的包中。