always_ specify_ types
Learn about the always_specify_types linter rule.
Specify type annotations.
Details
#From the style guide for the flutter repo:
DO specify type annotations.
Avoid var when specifying that a type is unknown
and short-hands that elide type annotations. Use
dynamic if you are being explicit that the type
is unknown. Use Object if you are being explicit
that you want an object that implements == and
hashCode.
BAD:
var foo = 10;
final bar = Bar();
const quux = 20;
GOOD:
int foo = 10;
final Bar bar = Bar();
String baz = 'hello';
const int quux = 20;
NOTE: Using the @optionalTypeArgs annotation in
the meta package, API authors can special-case
type parameters whose type needs to be dynamic but whose
declaration should be treated as optional. For example,
suppose you have a Key object whose type
parameter you'd like to treat as optional. Using the
@optionalTypeArgs would look like this:
import 'package:meta/meta.dart';
@optionalTypeArgs
class Key<T> {
...
}
void main() {
Key s = Key(); // OK!
}
Incompatible rules
#
The always_specify_types lint is incompatible
with the following rules:
-
avoid_types_on_closure_parameters -
omit_local_variable_types -
omit_obvious_local_variable_types -
omit_obvious_property_types
Enable
#
To enable the always_specify_types rule, add
always_specify_types under
linter > rules in your
analysis_options.yaml
file:
linter:
rules:
- always_specify_types
If you're instead using the YAML map syntax to configure
linter rules, add
always_specify_types: true under
linter > rules:
linter:
rules:
always_specify_types: true
除非另有说明,文档之所提及适用于 Dart 3.12.2 版本报告页面问题.