type_ init_ formals
Learn about the type_init_formals linter rule.
Don't type annotate initializing formals.
Details
#From Effective Dart:
DON'T type annotate initializing formals.
If a constructor parameter is using this.x to
initialize a field, then the type of the parameter is
understood to be the same type as the field. If a a
constructor parameter is using super.x to forward
to a super constructor, then the type of the parameter is
understood to be the same as the super constructor parameter.
Type annotating an initializing formal with a different type than that of the field is OK.
BAD:
class Point {
int x, y;
Point(int this.x, int this.y);
}
GOOD:
class Point {
int x, y;
Point(this.x, this.y);
}
BAD:
class A {
int a;
A(this.a);
}
class B extends A {
B(int super.a);
}
GOOD:
class A {
int a;
A(this.a);
}
class B extends A {
B(super.a);
}
Enable
#
To enable the type_init_formals rule, add
type_init_formals under
linter > rules in your
analysis_options.yaml
file:
linter:
rules:
- type_init_formals
If you're instead using the YAML map syntax to configure
linter rules, add type_init_formals: true under
linter > rules:
linter:
rules:
type_init_formals: true
除非另有说明,文档之所提及适用于 Dart 3.12.2 版本报告页面问题.