always_ specify_ types
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
Unless stated otherwise, the documentation on this site reflects Dart 3.9.2. Report an issue.