The Dart linter is a static analyzer for identifying possible problems in your Dart source code. More than a hundred linter rules are available, checking anything from potential typing issues, coding style, and formatting. This package -
package:lints - contains the lint settings recommended by the Dart team.
This package includes two sets of lints:
Core lints: Lints that help identify critical issues that are likely to lead to problems when running or consuming Dart code. All code should pass these lints.
Recommended lints: Lints that help identify additional issues that may lead to problems when running or consuming Dart code, and lints that enforce writing Dart using a single, idiomatic style and format. All code is encouraged to pass these lints. The recommended lints include all the core lints.
Additionally, a third lint set -
package:flutter_lints - extends the recommended set with additional recommended Flutter-specific lints.
The Dart team will likely not provide recommendations past the
recommended sets (e.g., a
strict rule set). However, there are many such rule sets in the ecosystem (available at pub.dev).
Rule set authors: consider adding the
lints topic to your pubspec to allow easier discovery (e.g., pub.dev/packages?q=topic:lints). For more information about topics, visit dart.dev/tools/pub/pubspec#topics.
When creating new Dart project using the
dart create command, the
recommended set of lints from
package:lints is enabled by default.
When uploading a package to the pub.dev package repository, packages are awarded pub points based on how many of the ‘core’ lints pass.
For new apps created with
dart create the
recommended set of lints are enabled by default.
For existing apps or packages, you can enable these lints via:
In a terminal, located at the root of your package, run this command:
dart pub add dev:lints
Create a new
analysis_options.yaml file, next to the pubspec, that includes the lints package:
To upgrade to the latest version of the lint set, run:
dart pub add dev:lints
For details on customizing static analysis above and beyond the predefined lint sets, check out Customizing static analysis.
The Dart language changes and the ecosystem continues to develop new best practices, so the lint sets must be periodically updated to reflect the best way we know to write Dart code. The process we use is:
Anyone can file an issue to discuss a potential change to a lint set (i.e., adding or removing a lint from one or both sets; if you're proposing an entirely new lint, the place to suggest that is at the linter repo). Feedback is welcome from any Dart user.
Periodically, a group of Dart and Flutter team members meet to review the suggestions and decide what to adopt.
The lists are updated and a new version of the package is published.
See rules.md for a list of rules that make up the core and recommended rule sets.