prefer_initializing_formals
尽可能使用初始化形参。
详情
#请尽可能使用初始化形参。
尽可能使用初始化形参可以让你的代码更简洁。
BAD
dart
class Point {
num? x, y;
Point(num x, num y) {
this.x = x;
this.y = y;
}
}
GOOD
dart
class Point {
num? x, y;
Point(num this.x, num this.y);
}
BAD
dart
class Point {
num? x, y;
Point({num? x, num? y}) {
this.x = x;
this.y = y;
}
}
GOOD
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
}
}
注意:另请注意,可以使用初始化形参强制执行比初始化字段更严格的类型。在以下示例中,尽管 amount
被声明为可空 (int?
),但未命名的 Bid
构造函数需要一个非空的 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