跳到主要内容

prefer_initializing_formals

稳定
推荐
修复可用

尽可能使用初始化形参。

详情

#

应该 尽可能使用初始化形参。

尽可能使用初始化形参可以使您的代码更简洁。

不良示例

dart
class Point {
  num? x, y;
  Point(num x, num y) {
    this.x = x;
    this.y = y;
  }
}

良好示例

dart
class Point {
  num? x, y;
  Point(num this.x, num this.y);
}

不良示例

dart
class Point {
  num? x, y;
  Point({num? x, num? y}) {
    this.x = x;
    this.y = y;
  }
}

良好示例

dart
class Point {
  num? x, y;
  Point({required num this.x, required num this.y});
}

注意: 除非参数名称和字段名称相同,否则此规则不会为命名参数生成 lint。 原因是解决此类 lint 可能需要重命名字段或重命名参数,而这两种操作都可能导致破坏性更改。 例如,以下代码不会生成 lint

dart
class Point {
  bool? isEnabled;
  Point({bool? enabled}) {
    this.isEnabled = enabled; // OK
  }
}

注意: 另请注意,可以使用初始化形参来强制执行比初始化字段更严格的类型。 在以下示例中,未命名的 Bid 构造函数需要非空 int,即使 amount 被声明为可为空 (int?)。

dart
class Bid {
  final int? amount;
  Bid(int this.amount);
  Bid.pass() : amount = null;
}

启用

#

要启用 prefer_initializing_formals 规则,请在您的 analysis_options.yaml 文件中的 linter > rules 下添加 prefer_initializing_formals

analysis_options.yaml
yaml
linter:
  rules:
    - prefer_initializing_formals

如果您改为使用 YAML 映射语法来配置 linter 规则,请在 linter > rules 下添加 prefer_initializing_formals: true

analysis_options.yaml
yaml
linter:
  rules:
    prefer_initializing_formals: true