prefer_final_fields
私有字段可以为 final
。
详情
#应该优先将私有字段声明为 final
,如果它们在库的后续代码中没有被重新赋值。
尽可能将字段声明为 final
是一个好的实践,因为它有助于避免意外的重新赋值,并允许编译器进行优化。
错误示例
dart
class BadImmutable {
var _label = 'hola mundo! BadImmutable'; // LINT
var label = 'hola mundo! BadImmutable'; // OK
}
错误示例
dart
class MultipleMutable {
var _label = 'hola mundo! GoodMutable', _offender = 'mumble mumble!'; // LINT
var _someOther; // LINT
MultipleMutable() : _someOther = 5;
MultipleMutable(this._someOther);
void changeLabel() {
_label= 'hello world! GoodMutable';
}
}
正确示例
dart
class GoodImmutable {
final label = 'hola mundo! BadImmutable', bla = 5; // OK
final _label = 'hola mundo! BadImmutable', _bla = 5; // OK
}
正确示例
dart
class GoodMutable {
var _label = 'hola mundo! GoodMutable';
void changeLabel() {
_label = 'hello world! GoodMutable';
}
}
错误示例
dart
class AssignedInAllConstructors {
var _label; // LINT
AssignedInAllConstructors(this._label);
AssignedInAllConstructors.withDefault() : _label = 'Hello';
}
正确示例
dart
class NotAssignedInAllConstructors {
var _label; // OK
NotAssignedInAllConstructors();
NotAssignedInAllConstructors.withDefault() : _label = 'Hello';
}
启用
#要启用 prefer_final_fields
规则,请在你的 analysis_options.yaml
文件中的 linter > rules 下添加 prefer_final_fields
analysis_options.yaml
yaml
linter:
rules:
- prefer_final_fields
如果您改为使用 YAML 映射语法来配置 linter 规则,请在 linter > rules 下添加 prefer_final_fields: true
analysis_options.yaml
yaml
linter:
rules:
prefer_final_fields: true
除非另有说明,否则本网站上的文档反映的是 Dart 3.7.1 版本。页面上次更新于 2025-03-07。 查看源代码 或 报告问题。