跳到主要内容

mixin_on_sealed_class

类 '{0}' 不应被用作 mixin 约束,因为它是一个 sealed 类,并且任何混入此 mixin 的类都必须将 '{0}' 作为超类。

描述

#

当 mixin 的超类约束是来自不同包中被标记为 sealed 的类时,分析器会产生此诊断。Sealed 类不能被扩展、实现、混入或用作超类约束。

示例

#

如果包 p 定义了一个 sealed 类

dart
import 'package:meta/meta.dart';

@sealed
class C {}

那么,当在除了 p 以外的包中时,以下代码会产生此诊断

dart
import 'package:p/p.dart';

mixin M on C {}

常见修复

#

如果使用该 mixin 的类不需要是 sealed 类的子类,那么考虑添加一个字段并委托给 sealed 类的包装实例。