跳到主内容

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() {}
}