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 rule is incompatible with the following rules:
avoid_types_on_closure_parametersomit_local_variable_typesomit_obvious_local_variable_typesomit_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_typesIf 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