Contents

Linter rules

Use the Dart linter to identify possible problems in your Dart code. You can use the linter through your IDE or with the dart analyze command. For information on how to enable and disable individual linter rules, see individual rules sections of the analyzer documentation.

This page lists all the linter rules, with details such as when you might want to use each rule, what code patterns trigger it, and how you might fix your code.

Sets

#

To avoid the need to individually select compatible linter rules, consider starting with a linter rule set, which the following packages provide:

lints
Contains two rule sets curated by the Dart team. We recommend using at least the core rule set, which is used when scoring packages uploaded to pub.dev. Or, better yet, use the recommended rule set, a superset of core that identifies additional issues and enforces style and format. If you're writing Flutter code, use the rule set in the flutter_lints package, which builds on lints.

flutter_lints
Contains the flutter rule set, which the Flutter team encourages you to use in Flutter apps, packages, and plugins. This rule set is a superset of the recommended set, which is itself a superset of the core set that partially determines the score of packages uploaded to pub.dev.

To learn how to use a specific rule set, visit the documentation for enabling and disabling linter rules.

To find more predefined rule sets, check out the #lints topic on pub.dev.

Status

#

Each rule has a status or maturity level:

Stable
These rules are safe to use and are verified as functional with the latest versions of the Dart language. All rules are considered stable unless they're marked as experimental, deprecated, or removed.
Experimental
These rules are still under evaluation and might never be stabilized. Use these with caution and report any issues you come across.
Deprecated
These rules are no longer suggested for use and might be removed in a future Dart release.
Removed
These rules have already been removed in the latest stable Dart release.

Quick fixes

#

Some rules can be fixed automatically using quick fixes. A quick fix is an automated edit targeted at fixing the issue reported by the linter rule.

If the rule has a quick fix, it can be applied using dart fix or using your editor with Dart support. To learn more, see Quick fixes for analysis issues.

Rules

#

The following is an index of all linter rules and a short description of their functionality. To learn more about a specific rule, click the Learn more button on its card.

For an auto-generated list containing all linter rules in Dart 3.6.0, check out All linter rules.


always_declare_return_types

Declare method return types.

build
always_put_control_body_on_new_line

Separate the control structure expression from its statement.

build
always_put_required_named_parameters_first

Put required named parameters first.

build
always_require_non_null_named_parameters

Specify @required on named parameters without defaults.

error
always_specify_types

Specify type annotations.

build
always_use_package_imports

Avoid relative imports for files in lib/.

build
annotate_overrides

Annotate overridden members.

build thumb_up flutter
annotate_redeclares

Annotate redeclared members.

science build
avoid_annotating_with_dynamic

Avoid annotating with dynamic when not required.

build
avoid_as

Avoid using as.

error
avoid_bool_literals_in_conditional_expressions

Avoid bool literals in conditional expressions.

avoid_catches_without_on_clauses

Avoid catches without on clauses.

avoid_catching_errors

Don't explicitly catch Error or types that implement it.

avoid_classes_with_only_static_members

Avoid defining a class that contains only static members.

avoid_double_and_int_checks

Avoid double and int checks.

avoid_dynamic_calls

Avoid method calls or property accesses on a dynamic target.

avoid_empty_else

Avoid empty statements in else clauses.

build circles thumb_up flutter
avoid_equals_and_hash_code_on_mutable_classes

Avoid overloading operator == and hashCode on classes not marked @immutable.

avoid_escaping_inner_quotes

Avoid escaping inner quotes by converting surrounding quotes.

build
avoid_field_initializers_in_const_classes

Avoid field initializers in const classes.

avoid_final_parameters

Avoid final for parameter declarations.

avoid_function_literals_in_foreach_calls

Avoid using forEach with a function literal.

build thumb_up flutter
avoid_futureor_void

Avoid using 'FutureOr' as the type of a result.

science
avoid_implementing_value_types

Don't implement classes that override ==.

avoid_init_to_null

Don't explicitly initialize variables to null.

build thumb_up flutter
avoid_js_rounded_ints

Avoid JavaScript rounded ints.

avoid_multiple_declarations_per_line

Don't declare multiple variables on a single line.

build
avoid_null_checks_in_equality_operators

Don't check for null in custom == operators.

build
avoid_positional_boolean_parameters

Avoid positional boolean parameters.

avoid_print

Avoid print calls in production code.

build flutter
avoid_private_typedef_functions

Avoid private typedef functions.

build
avoid_redundant_argument_values

Avoid redundant argument values.

build
avoid_relative_lib_imports

Avoid relative imports for files in lib/.

build circles thumb_up flutter
avoid_renaming_method_parameters

Don't rename parameters of overridden methods.

build thumb_up flutter
avoid_return_types_on_setters

Avoid return types on setters.

build thumb_up flutter
avoid_returning_null

Avoid returning null from members whose return type is bool, double, int, or num.

error
avoid_returning_null_for_future

Avoid returning null for Future.

error
avoid_returning_null_for_void

Avoid returning null for void.

build thumb_up flutter
avoid_returning_this

Avoid returning this from methods just to enable a fluent interface.

avoid_setters_without_getters

Avoid setters without getters.

avoid_shadowing_type_parameters

Avoid shadowing type parameters.

circles thumb_up flutter
avoid_single_cascade_in_expression_statements

Avoid single cascade in expression statements.

build thumb_up flutter
avoid_slow_async_io

Avoid slow asynchronous dart:io methods.

avoid_type_to_string

Avoid.toString() in production code since results may be minified.

avoid_types_as_parameter_names

Avoid types as parameter names.

build circles thumb_up flutter
avoid_types_on_closure_parameters

Avoid annotating types for function expression parameters.

build
avoid_unnecessary_containers

Avoid unnecessary containers.

build flutter
avoid_unstable_final_fields

Avoid overriding a final field to return different values if called multiple times.

error
avoid_unused_constructor_parameters

Avoid defining unused parameters in constructors.

build
avoid_void_async

Avoid async functions that return void.

build
avoid_web_libraries_in_flutter

Avoid using web-only libraries outside Flutter web plugin packages.

flutter
await_only_futures

Await only futures.

build circles thumb_up flutter
camel_case_extensions

Name extensions using UpperCamelCase.

circles thumb_up flutter
camel_case_types

Name types using UpperCamelCase.

circles thumb_up flutter
cancel_subscriptions

Cancel instances of dart:async StreamSubscription.

cascade_invocations

Cascade consecutive method invocations on the same reference.

build
cast_nullable_to_non_nullable

Don't cast a nullable value to a non nullable type.

build
close_sinks

Close instances of dart:core Sink.

collection_methods_unrelated_type

Invocation of various collection methods with arguments of unrelated types.

circles thumb_up flutter
combinators_ordering

Sort combinator names alphabetically.

build
comment_references

Only reference in-scope identifiers in doc comments.

build
conditional_uri_does_not_exist

Missing conditional import.

constant_identifier_names

Prefer using lowerCamelCase for constant names.

build thumb_up flutter
control_flow_in_finally

Avoid control flow in finally blocks.

thumb_up flutter
curly_braces_in_flow_control_structures

DO use curly braces for all flow control structures.

build circles thumb_up flutter
dangling_library_doc_comments

Attach library doc comments to library directives.

build circles thumb_up flutter
depend_on_referenced_packages

Depend on referenced packages.

circles thumb_up flutter
deprecated_consistency

Missing deprecated annotation.

deprecated_member_use_from_same_package

Avoid using deprecated elements from within the package in which they are declared.

build
diagnostic_describe_all_properties

DO reference all public properties in debug methods.

build
directives_ordering

Adhere to Effective Dart Guide directives sorting conventions.

build
discarded_futures

Don't invoke asynchronous functions in non-async blocks.

build
do_not_use_environment

Do not use environment declared variables.

document_ignores

Document ignore comments.

empty_catches

Avoid empty catch blocks.

build circles thumb_up flutter
empty_constructor_bodies

Use ; instead of {} for empty constructor bodies.

build thumb_up flutter
empty_statements

Avoid empty statements.

build thumb_up flutter
enable_null_safety

Do use sound null safety.

error
eol_at_end_of_file

Put a single newline at end of file.

build
exhaustive_cases

Define case clauses for all constants in enum-like classes.

build thumb_up flutter
file_names

Name source files using lowercase_with_underscores.

circles thumb_up flutter
flutter_style_todos

Use Flutter TODO format: // TODO(username): message, https://URL-to-issue.

build
hash_and_equals

Always override hashCode if overriding ==.

build circles thumb_up flutter
implementation_imports

Don't import implementation files from another package.

thumb_up flutter
implicit_call_tearoffs

Explicitly tear-off call methods when using an object as a Function.

build circles thumb_up flutter
implicit_reopen

Don't implicitly reopen classes.

science build
invalid_case_patterns

Use case expressions that are valid in Dart 3.0.

science build
invalid_runtime_check_with_js_interop_types

Avoid runtime type tests with JS interop types where the result may not be platform-consistent.

thumb_up flutter
invariant_booleans

Conditions should not unconditionally evaluate to true or to false.

error
iterable_contains_unrelated_type

Invocation of Iterable<E>.contains with references of unrelated types.

error
join_return_with_assignment

Join return statement with assignment when possible.

leading_newlines_in_multiline_strings

Start multiline strings with a newline.

build
library_annotations

Attach library annotations to library directives.

build circles thumb_up flutter
library_names

Name libraries using lowercase_with_underscores.

library_prefixes

Use lowercase_with_underscores when specifying a library prefix.

thumb_up flutter
library_private_types_in_public_api

Avoid using private types in public APIs.

thumb_up flutter
lines_longer_than_80_chars

Avoid lines longer than 80 characters.

list_remove_unrelated_type

Invocation of remove with references of unrelated types.

error
literal_only_boolean_expressions

Boolean expression composed only with literals.

matching_super_parameters

Use matching super parameter names.

missing_code_block_language_in_doc_comment

A code block is missing a specified language.

missing_whitespace_between_adjacent_strings

Missing whitespace between adjacent strings.

no_adjacent_strings_in_list

Don't use adjacent strings in list.

no_default_cases

No default cases.

science
no_duplicate_case_values

Don't use more than one case with same value.

build circles thumb_up flutter
no_leading_underscores_for_library_prefixes

Avoid leading underscores for library prefixes.

build thumb_up flutter
no_leading_underscores_for_local_identifiers

Avoid leading underscores for local identifiers.

build thumb_up flutter
no_literal_bool_comparisons

Don't compare boolean expressions to boolean literals.

build
no_logic_in_create_state

Don't put any logic in createState.

flutter
no_runtimetype_tostring

Avoid calling toString() on runtimeType.

no_self_assignments

Don't assign a variable to itself.

no_wildcard_variable_uses

Don't use wildcard parameters or variables.

circles thumb_up flutter
non_constant_identifier_names

Name non-constant identifiers using lowerCamelCase.

build circles thumb_up flutter
noop_primitive_operations

Noop primitive operations.

build
null_check_on_nullable_type_parameter

Don't use null check on a potentially nullable type parameter.

build circles thumb_up flutter
null_closures

Do not pass null as an argument where a closure is expected.

build thumb_up flutter
omit_local_variable_types

Omit type annotations for local variables.

build
omit_obvious_local_variable_types

Omit obvious type annotations for local variables.

science build
omit_obvious_property_types

Omit obvious type annotations for top-level and static variables.

science build
one_member_abstracts

Avoid defining a one-member abstract class when a simple function will do.

only_throw_errors

Only throw instances of classes extending either Exception or Error.

overridden_fields

Don't override fields.

thumb_up flutter
package_api_docs

Provide doc comments for all public APIs.

warning
package_names

Use lowercase_with_underscores for package names.

thumb_up flutter
package_prefixed_library_names

Prefix library names with the package name and a dot-separated path.

parameter_assignments

Don't reassign references to parameters of functions or methods.

prefer_adjacent_string_concatenation

Use adjacent strings to concatenate string literals.

build thumb_up flutter
prefer_asserts_in_initializer_lists

Prefer putting asserts in initializer lists.

prefer_asserts_with_message

Prefer asserts with message.

prefer_bool_in_asserts

Prefer using a boolean as the assert condition.

error
prefer_collection_literals

Use collection literals when possible.

build thumb_up flutter
prefer_conditional_assignment

Prefer using ??= over testing for null.

build thumb_up flutter
prefer_const_constructors

Prefer const with constant constructors.

build
prefer_const_constructors_in_immutables

Prefer declaring const constructors on @immutable classes.

build flutter
prefer_const_declarations

Prefer const over final for declarations.

build
prefer_const_literals_to_create_immutables

Prefer const literals as parameters of constructors on @immutable classes.

build
prefer_constructors_over_static_methods

Prefer defining constructors instead of static methods to create instances.

prefer_contains

Use contains for List and String instances.

build thumb_up flutter
prefer_double_quotes

Prefer double quotes where they won't require escape sequences.

build
prefer_equal_for_default_values

Use = to separate a named parameter from its default value.

error
prefer_expression_function_bodies

Use => for short members whose body is a single return statement.

build
prefer_final_fields

Private field could be final.

build thumb_up flutter
prefer_final_in_for_each

Prefer final in for-each loop variable if reference is not reassigned.

build
prefer_final_locals

Prefer final for variable declarations if they are not reassigned.

build
prefer_final_parameters

Prefer final for parameter declarations if they are not reassigned.

build
prefer_for_elements_to_map_fromiterable

Prefer for elements when building maps from iterables.

build thumb_up flutter
prefer_foreach

Use forEach to only apply a function to all the elements.

prefer_function_declarations_over_variables

Use a function declaration to bind a function to a name.

build thumb_up flutter
prefer_generic_function_type_aliases

Prefer generic function type aliases.

build circles thumb_up flutter
prefer_if_elements_to_conditional_expressions

Prefer if elements to conditional expressions where possible.

build
prefer_if_null_operators

Prefer using ?? operators.

build thumb_up flutter
prefer_initializing_formals

Use initializing formals when possible.

build thumb_up flutter
prefer_inlined_adds

Inline list item declarations where possible.

build thumb_up flutter
prefer_int_literals

Prefer int literals over double literals.

build
prefer_interpolation_to_compose_strings

Use interpolation to compose strings and values.

build thumb_up flutter
prefer_is_empty

Use isEmpty for Iterables and Maps.

build circles thumb_up flutter
prefer_is_not_empty

Use isNotEmpty for Iterables and Maps.

build circles thumb_up flutter
prefer_is_not_operator

Prefer is! operator.

build thumb_up flutter
prefer_iterable_wheretype

Prefer to use whereType on iterable.

build circles thumb_up flutter
prefer_mixin

Prefer using mixins.

prefer_null_aware_method_calls

Prefer null-aware method calls.

prefer_null_aware_operators

Prefer using null-aware operators.

build thumb_up flutter
prefer_relative_imports

Prefer relative imports for files in lib/.

build
prefer_single_quotes

Only use double quotes for strings containing single quotes.

build
prefer_spread_collections

Use spread collections when possible.

build thumb_up flutter
prefer_typing_uninitialized_variables

Prefer typing uninitialized variables and fields.

build circles thumb_up flutter
prefer_void_to_null

Don't use the Null type, unless you are positive that you don't want void.

build
provide_deprecation_message

Provide a deprecation message, via @Deprecated("message").

circles thumb_up flutter
public_member_api_docs

Document all public members.

recursive_getters

Property getter recursively returns itself.

thumb_up flutter
require_trailing_commas

Use trailing commas for all parameter lists and argument lists.

build
secure_pubspec_urls

Use secure urls in pubspec.yaml.

circles thumb_up flutter
sized_box_for_whitespace

SizedBox for whitespace.

build flutter
sized_box_shrink_expand

Use SizedBox shrink and expand named constructors.

slash_for_doc_comments

Prefer using /// for doc comments.

build thumb_up flutter
sort_child_properties_last

Sort child properties last in widget instance creations.

build flutter
sort_constructors_first

Sort constructor declarations before other members.

build
sort_pub_dependencies

Sort pub dependencies alphabetically.

sort_unnamed_constructors_first

Sort unnamed constructor declarations first.

build
specify_nonobvious_local_variable_types

Specify non-obvious type annotations for local variables.

science build
specify_nonobvious_property_types

Specify non-obvious type annotations for top-level and static variables.

science build
strict_top_level_inference

Specify type annotations.

pending build
super_goes_last

Place the super call last in a constructor initialization list.

error
test_types_in_equals

Test type of argument in operator ==(Object other).

throw_in_finally

Avoid throw in finally block.

tighten_type_of_initializing_formals

Tighten type of initializing formal.

type_annotate_public_apis

Type annotate public APIs.

build
type_init_formals

Don't type annotate initializing formals.

build thumb_up flutter
type_literal_in_constant_pattern

Don't use constant patterns with type literals.

build circles thumb_up flutter
unawaited_futures

Future results in async function bodies must be awaited or marked unawaited using dart:async.

build
unintended_html_in_doc_comment

Use of angle brackets in a doc comment is treated as HTML by Markdown.

circles thumb_up flutter
unnecessary_await_in_return

Unnecessary await keyword in return.

build
unnecessary_brace_in_string_interps

Avoid using braces in interpolation when not needed.

build thumb_up flutter
unnecessary_breaks

Don't use explicit breaks when a break is implied.

build
unnecessary_const

Avoid const keyword.

build thumb_up flutter
unnecessary_constructor_name

Unnecessary .new constructor name.

build thumb_up flutter
unnecessary_final

Don't use final for local variables.

build
unnecessary_getters_setters

Avoid wrapping fields in getters and setters just to be "safe".

build thumb_up flutter
unnecessary_lambdas

Don't create a lambda when a tear-off will do.

build
unnecessary_late

Don't specify the late modifier when it is not needed.

build thumb_up flutter
unnecessary_library_directive

Avoid library directives unless they have documentation comments or annotations.

build
unnecessary_library_name

Don't have a library name in a library declaration.

build thumb_up flutter
unnecessary_new

Unnecessary new keyword.

build thumb_up flutter
unnecessary_null_aware_assignments

Avoid null in null-aware assignment.

build thumb_up flutter
unnecessary_null_aware_operator_on_extension_on_nullable

Unnecessary null aware operator on extension on a nullable type.

unnecessary_null_checks

Unnecessary null checks.

science build
unnecessary_null_in_if_null_operators

Avoid using null in ?? operators.

build thumb_up flutter
unnecessary_nullable_for_final_variable_declarations

Use a non-nullable type for a final variable initialized with a non-nullable value.

build thumb_up flutter
unnecessary_overrides

Don't override a method to do a super method invocation with the same parameters.

build circles thumb_up flutter
unnecessary_parenthesis

Unnecessary parentheses can be removed.

build
unnecessary_raw_strings

Unnecessary raw string.

build
unnecessary_statements

Avoid using unnecessary statements.

unnecessary_string_escapes

Remove unnecessary backslashes in strings.

build thumb_up flutter
unnecessary_string_interpolations

Unnecessary string interpolation.

build thumb_up flutter
unnecessary_this

Don't access members with this unless avoiding shadowing.

build thumb_up flutter
unnecessary_to_list_in_spreads

Unnecessary toList() in spreads.

build thumb_up flutter
unnecessary_underscores

Unnecessary underscores can be removed.

pending
unreachable_from_main

Unreachable top-level members in executable libraries.

build
unrelated_type_equality_checks

Equality operator == invocation with references of unrelated types.

circles thumb_up flutter
unsafe_html

Avoid unsafe HTML APIs.

error
unsafe_variance

Unsafe type: Has a type variable in a non-covariant position.

science
use_build_context_synchronously

Do not use BuildContext across asynchronous gaps.

flutter
use_colored_box

Use ColoredBox.

build
use_decorated_box

Use DecoratedBox.

build
use_enums

Use enums rather than classes that behave like enums.

build
use_full_hex_values_for_flutter_colors

Prefer an 8-digit hexadecimal integer (for example, 0xFFFFFFFF) to instantiate a Color.

build flutter
use_function_type_syntax_for_parameters

Use generic function type syntax for parameters.

build thumb_up flutter
use_if_null_to_convert_nulls_to_bools

Use ?? operators to convert nulls to bools.

use_is_even_rather_than_modulo

Prefer intValue.isOdd/isEven instead of checking the result of % 2.

use_key_in_widget_constructors

Use key in widget constructors.

build flutter
use_late_for_private_fields_and_variables

Use late for private members with a non-nullable type.

science
use_named_constants

Use predefined named constants.

build
use_raw_strings

Use raw string to avoid escapes.

build
use_rethrow_when_possible

Use rethrow to rethrow a caught exception.

build thumb_up flutter
use_setters_to_change_properties

Use a setter for operations that conceptually change a property.

use_string_buffers

Use string buffers to compose strings.

use_string_in_part_of_directives

Use string in part of directives.

build circles thumb_up flutter
use_super_parameters

Use super-initializer parameters where possible.

science build thumb_up flutter
use_test_throws_matchers

Use throwsA matcher instead of fail().

use_to_and_as_if_applicable

Start the name of the method with to/_to or as/_as if applicable.

use_truncating_division

Use truncating division.

build
valid_regexps

Use valid regular expression syntax.

circles thumb_up flutter
void_checks

Don't assign to void.

circles thumb_up flutter