assert_in_redirecting_constructor
重定向构造函数不能有 'assert' 初始化器。
描述
#当重定向构造函数(重定向到同一个类中的另一个构造函数)在其初始化列表包含 assert 时,分析器会产生此诊断信息。
示例
#以下代码会产生此诊断信息,因为未命名构造函数是一个重定向构造函数,并且其初始化列表中也包含 assert
dart
class C {
C(int x) : assert(x > 0), this.name();
C.name() {}
}
常见修复方法
#如果不需要 assert,则将其移除
dart
class C {
C(int x) : this.name();
C.name() {}
}
如果需要 assert,则将构造函数转换为工厂构造函数
dart
class C {
factory C(int x) {
assert(x > 0);
return C.name();
}
C.name() {}
}