Linter for Dart

Lint Rules

Using the Linter

Supported Lint Rules

This list is auto-generated from our sources.

Rules are organized into familiar rule groups.

In addition, rules can be further distinguished by maturity. Unqualified rules are considered stable, while others may be marked experimental to indicate that they are under review. Lints that are marked as deprecated should not be used and are subject to removal in future Linter releases.

Rules can be selectively enabled in the analyzer using analysis options or through an analysis options file.

As some lints may contradict each other, only a subset of these will be enabled in practice, but this list should provide a convenient jumping-off point.

Many lints are included in various predefined rulesets:

Rules included in these rulesets are badged in the documentation below.

These rules are under active development. Feedback is welcome!

Error Rules

always_use_package_imports
has-fix

Avoid relative imports for files in lib/.

avoid_dynamic_calls

Avoid method calls or property accesses on a "dynamic" target.

avoid_empty_else
corerecommendedflutterhas-fix

Avoid empty else statements.

avoid_print
flutterhas-fix

Avoid print calls in production code.

avoid_relative_lib_imports
corerecommendedflutterpedantichas-fix

Avoid relative imports for files in lib/.

avoid_returning_null_for_future
has-fix

Avoid returning null for Future.

avoid_slow_async_io

Avoid slow async dart:io methods.

avoid_type_to_string

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

avoid_types_as_parameter_names
corerecommendedflutterpedantichas-fix

Avoid types as parameter names.

avoid_web_libraries_in_flutter
flutter

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

cancel_subscriptions

Cancel instances of dart.async.StreamSubscription.

close_sinks

Close instances of dart.core.Sink.

collection_methods_unrelated_type

Invocation of various collection methods with arguments of unrelated types.

comment_references

Only reference in scope identifiers in doc comments.

control_flow_in_finally
recommendedflutter

Avoid control flow in finally blocks.

diagnostic_describe_all_properties
has-fix

DO reference all public properties in debug methods.

discarded_futures
has-fix

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

empty_statements
recommendedflutterhas-fix

Avoid empty statements.

hash_and_equals
corerecommendedflutterhas-fix

Always override hashCode if overriding ==.

invariant_booleans (deprecated)

Conditions should not unconditionally evaluate to true or to false.

iterable_contains_unrelated_type
corerecommendedflutter

Invocation of Iterable.contains with references of unrelated types.

list_remove_unrelated_type
corerecommendedflutter

Invocation of remove with references of unrelated types.

literal_only_boolean_expressions

Boolean expression composed only with literals.

no_adjacent_strings_in_list

Don't use adjacent strings in list.

no_duplicate_case_values
corerecommendedflutterpedantichas-fix

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

no_logic_in_create_state
flutter

Don't put any logic in createState.

prefer_relative_imports
has-fix

Prefer relative imports for files in lib/.

prefer_void_to_null
recommendedflutterhas-fix

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

test_types_in_equals

Test type arguments in operator ==(Object other).

throw_in_finally

Avoid throw in finally block.

unnecessary_statements

Avoid using unnecessary statements.

unrelated_type_equality_checks
corerecommendedflutterpedantic

Equality operator == invocation with references of unrelated types.

unsafe_html
pedantic

Avoid unsafe HTML APIs.

use_build_context_synchronously (experimental)
flutter

Do not use BuildContexts across async gaps.

use_key_in_widget_constructors
flutterhas-fix

Use key in widget constructors.

valid_regexps
corerecommendedflutterpedantic

Use valid regular expression syntax.

Style Rules

always_declare_return_types
pedantichas-fix

Declare method return types.

always_put_control_body_on_new_line
has-fix

Separate the control structure expression from its statement.

always_put_required_named_parameters_first

Put required named parameters first.

always_require_non_null_named_parameters
recommendedflutterpedantichas-fix

Specify @required on named parameters without defaults.

always_specify_types
has-fix

Specify type annotations.

annotate_overrides
recommendedflutterpedantichas-fix

Annotate overridden members.

avoid_annotating_with_dynamic
has-fix

Avoid annotating with dynamic when not required.

avoid_as (deprecated)

Avoid using as.

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_escaping_inner_quotes
has-fix

Avoid escaping inner quotes by converting surrounding quotes.

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
recommendedflutterhas-fix

Avoid using forEach with a function literal.

avoid_implementing_value_types

Don't implement classes that override ==.

avoid_init_to_null
recommendedflutterpedantichas-fix

Don't explicitly initialize variables to null.

avoid_js_rounded_ints

Avoid JavaScript rounded ints.

avoid_multiple_declarations_per_line

Don't declare multiple variables on a single line.

avoid_null_checks_in_equality_operators
recommendedflutterpedantichas-fix

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

avoid_equals_and_hash_code_on_mutable_classes

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

avoid_positional_boolean_parameters

Avoid positional boolean parameters.

avoid_private_typedef_functions
has-fix

Avoid private typedef functions.

avoid_redundant_argument_values
has-fix

Avoid redundant argument values.

avoid_renaming_method_parameters
recommendedflutterhas-fix

Don't rename parameters of overridden methods.

avoid_returning_null

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

avoid_returning_null_for_void
recommendedflutterhas-fix

Avoid returning null for void.

avoid_returning_this

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

avoid_return_types_on_setters
recommendedflutterpedantichas-fix

Avoid return types on setters.

avoid_setters_without_getters

Avoid setters without getters.

avoid_shadowing_type_parameters
corerecommendedflutterpedantic

Avoid shadowing type parameters.

avoid_single_cascade_in_expression_statements
recommendedflutterpedantichas-fix

Avoid single cascade in expression statements.

avoid_types_on_closure_parameters
has-fix

Avoid annotating types for function expression parameters.

avoid_unnecessary_containers
flutterhas-fix

Avoid unnecessary containers.

avoid_unused_constructor_parameters
has-fix

Avoid defining unused parameters in constructors.

avoid_void_async
has-fix

Avoid async functions that return void.

await_only_futures
corerecommendedflutterpedantichas-fix

Await only futures.

camel_case_extensions
corerecommendedflutterpedantic

Name extensions using UpperCamelCase.

camel_case_types
corerecommendedflutter

Name types using UpperCamelCase.

cascade_invocations
has-fix

Cascade consecutive method invocations on the same reference.

cast_nullable_to_non_nullable (experimental)

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

combinators_ordering
has-fix

Sort combinator names alphabetically.

conditional_uri_does_not_exist

Missing conditional import.

constant_identifier_names
recommendedflutter

Prefer using lowerCamelCase for constant names.

curly_braces_in_flow_control_structures
corerecommendedflutterpedantichas-fix

DO use curly braces for all flow control structures.

deprecated_consistency

Missing deprecated annotation.

directives_ordering
has-fix

Adhere to Effective Dart Guide directives sorting conventions.

do_not_use_environment

Do not use environment declared variables.

empty_catches
corerecommendedflutterpedantichas-fix

Avoid empty catch blocks.

empty_constructor_bodies
recommendedflutterpedantichas-fix

Use ; instead of {} for empty constructor bodies.

eol_at_end_of_file
has-fix

Put a single newline at end of file.

exhaustive_cases
recommendedflutterhas-fix

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

file_names
corerecommendedflutter

Name source files using lowercase_with_underscores.

flutter_style_todos

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

implementation_imports
recommendedflutter

Don't import implementation files from another package.

join_return_with_assignment

Join return statement with assignment when possible.

leading_newlines_in_multiline_strings
has-fix

Start multiline strings with a newline.

library_names
recommendedflutterpedantic

Name libraries using lowercase_with_underscores.

library_prefixes
recommendedflutterpedantic

Use lowercase_with_underscores when specifying a library prefix.

library_private_types_in_public_api
recommendedflutter

Avoid using private types in public APIs.

lines_longer_than_80_chars

Avoid lines longer than 80 characters.

missing_whitespace_between_adjacent_strings

Missing whitespace between adjacent strings.

no_default_cases (experimental)

No default cases.

non_constant_identifier_names
corerecommendedflutterhas-fix

Name non-constant identifiers using lowerCamelCase.

no_leading_underscores_for_library_prefixes
recommendedflutterhas-fix

Avoid leading underscores for library prefixes.

no_leading_underscores_for_local_identifiers
recommendedflutterhas-fix

Avoid leading underscores for local identifiers.

noop_primitive_operations

Noop primitive operations.

no_runtimeType_toString

Avoid calling toString() on runtimeType.

null_check_on_nullable_type_parameter
corerecommendedflutterhas-fix

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

null_closures
recommendedflutterpedantichas-fix

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

omit_local_variable_types
pedantichas-fix

Omit type annotations for local variables.

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
recommendedflutter

Don't override fields.

package_api_docs

Provide doc comments for all public APIs.

package_prefixed_library_names
corerecommendedflutter

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
recommendedflutterpedantichas-fix

Use adjacent strings to concatenate string literals.

prefer_asserts_in_initializer_lists

Prefer putting asserts in initializer lists.

prefer_asserts_with_message

Prefer asserts with message.

prefer_bool_in_asserts (deprecated)

Prefer using a boolean as the assert condition.

prefer_collection_literals
recommendedflutterpedantichas-fix

Use collection literals when possible.

prefer_conditional_assignment
recommendedflutterpedantichas-fix

Prefer using ??= over testing for null.

prefer_const_constructors
flutterhas-fix

Prefer const with constant constructors.

prefer_const_constructors_in_immutables
flutterhas-fix

Prefer declaring const constructors on @immutable classes.

prefer_const_declarations
flutterhas-fix

Prefer const over final for declarations.

prefer_const_literals_to_create_immutables
flutterhas-fix

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

prefer_constructors_over_static_methods

Prefer defining constructors instead of static methods to create instances.

prefer_contains
recommendedflutterpedantichas-fix

Use contains for List and String instances.

prefer_double_quotes
has-fix

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

prefer_equal_for_default_values
recommendedflutterpedantichas-fix

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

prefer_expression_function_bodies
has-fix

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

prefer_final_fields
recommendedflutterpedantichas-fix

Private field could be final.

prefer_final_in_for_each
has-fix

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

prefer_final_locals
has-fix

Prefer final for variable declarations if they are not reassigned.

prefer_final_parameters
has-fix

Prefer final for parameter declarations if they are not reassigned.

prefer_foreach

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

prefer_for_elements_to_map_fromIterable
recommendedflutterpedantichas-fix

Prefer 'for' elements when building maps from iterables.

prefer_function_declarations_over_variables
recommendedflutterhas-fix

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

prefer_generic_function_type_aliases
corerecommendedflutterpedantichas-fix

Prefer generic function type aliases.

prefer_if_elements_to_conditional_expressions
has-fix

Prefer if elements to conditional expressions where possible.

prefer_if_null_operators
recommendedflutterpedantichas-fix

Prefer using if null operators.

prefer_initializing_formals
recommendedflutterhas-fix

Use initializing formals when possible.

prefer_inlined_adds
recommendedflutterpedantichas-fix

Inline list item declarations where possible.

prefer_interpolation_to_compose_strings
recommendedflutterhas-fix

Use interpolation to compose strings and values.

prefer_int_literals
has-fix

Prefer int literals over double literals.

prefer_is_empty
corerecommendedflutterpedantichas-fix

Use isEmpty for Iterables and Maps.

prefer_is_not_empty
corerecommendedflutterpedantichas-fix

Use isNotEmpty for Iterables and Maps.

prefer_is_not_operator
recommendedflutterhas-fix

Prefer is! operator.

prefer_iterable_whereType
corerecommendedflutterpedantichas-fix

Prefer to use whereType on iterable.

prefer_mixin

Prefer using mixins.

prefer_null_aware_operators
recommendedflutterhas-fix

Prefer using null aware operators.

prefer_null_aware_method_calls

Prefer null aware method calls.

prefer_single_quotes
pedantichas-fix

Only use double quotes for strings containing single quotes.

prefer_spread_collections
recommendedflutterpedantichas-fix

Use spread collections when possible.

prefer_typing_uninitialized_variables
corerecommendedflutterhas-fix

Prefer typing uninitialized variables and fields.

provide_deprecation_message
corerecommendedflutter

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

public_member_api_docs

Document all public members.

recursive_getters
recommendedflutterpedantic

Property getter recursively returns itself.

require_trailing_commas (experimental)
has-fix

Use trailing commas for all function calls and declarations.

sized_box_for_whitespace
flutterhas-fix

SizedBox for whitespace.

sized_box_shrink_expand

Use SizedBox shrink and expand named constructors.

slash_for_doc_comments
recommendedflutterpedantichas-fix

Prefer using /// for doc comments.

sort_child_properties_last
flutterpedantichas-fix

Sort child properties last in widget instance creations.

sort_constructors_first
has-fix

Sort constructor declarations before other members.

sort_unnamed_constructors_first
has-fix

Sort unnamed constructor declarations first.

super_goes_last (deprecated)

Place the super call last in a constructor initialization list.

tighten_type_of_initializing_formals

Tighten type of initializing formal.

type_annotate_public_apis
has-fix

Type annotate public APIs.

type_init_formals
recommendedflutterpedantichas-fix

Don't type annotate initializing formals.

unawaited_futures
pedantichas-fix

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

unnecessary_await_in_return

Unnecessary await keyword in return.

unnecessary_brace_in_string_interps
recommendedflutterpedantichas-fix

Avoid using braces in interpolation when not needed.

unnecessary_const
recommendedflutterpedantichas-fix

Avoid const keyword.

unnecessary_constructor_name
recommendedflutterhas-fix

Unnecessary .new constructor name.

unnecessary_final
has-fix

Don't use final for local variables.

unnecessary_new
recommendedflutterpedantichas-fix

Unnecessary new keyword.

unnecessary_null_aware_assignments
recommendedflutterhas-fix

Avoid null in null-aware assignment.

unnecessary_null_in_if_null_operators
recommendedflutterpedantichas-fix

Avoid using null in if null operators.

unnecessary_getters_setters
recommendedflutterpedantichas-fix

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

unnecessary_lambdas
has-fix

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

unnecessary_late
recommendedflutterhas-fix

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

unnecessary_nullable_for_final_variable_declarations (experimental)
recommendedflutterhas-fix

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

unnecessary_null_aware_operator_on_extension_on_nullable

Unnecessary null aware operator on extension on a nullable type.

unnecessary_null_checks (experimental)

Unnecessary null checks.

unnecessary_overrides
corerecommendedflutterhas-fix

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

unnecessary_parenthesis
has-fix

Unnecessary parentheses can be removed.

unnecessary_raw_strings
has-fix

Unnecessary raw string.

unnecessary_string_escapes
recommendedflutterhas-fix

Remove unnecessary backslashes in strings.

unnecessary_string_interpolations
recommendedflutterhas-fix

Unnecessary string interpolation.

unnecessary_this
recommendedflutterpedantichas-fix

Don't access members with this unless avoiding shadowing.

unnecessary_to_list_in_spreads

Unnecessary toList() in spreads.

unreachable_from_main (experimental)

Unreachable top-level members in executable libraries.

use_colored_box

Use ColoredBox.

use_decorated_box

Use DecoratedBox.

use_enums (experimental)
has-fix

Use enums rather than classes that behave like enums.

use_full_hex_values_for_flutter_colors
flutterpedantichas-fix

Prefer an 8-digit hexadecimal integer(0xFFFFFFFF) to instantiate Color.

use_function_type_syntax_for_parameters
recommendedflutterpedantichas-fix

Use generic function type syntax for parameters.

use_if_null_to_convert_nulls_to_bools

Use if-null operators to convert nulls to bools.

use_is_even_rather_than_modulo

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

use_late_for_private_fields_and_variables (experimental)

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

use_named_constants

Use predefined named constants.

use_rethrow_when_possible
recommendedflutterpedantichas-fix

Use rethrow to rethrow a caught exception.

use_raw_strings
has-fix

Use raw string to avoid escapes.

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.

use_super_parameters (experimental)
has-fix

Use super-initializer parameters where possible.

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.

void_checks
corerecommendedflutter

Don't assign to void.

Pub Rules

depend_on_referenced_packages
corerecommendedflutter

Depend on referenced packages.

package_names
recommendedflutter

Use lowercase_with_underscores for package names.

secure_pubspec_urls

Use secure urls in pubspec.yaml.

sort_pub_dependencies

Sort pub dependencies alphabetically.