rexios_lints 7.0.0 rexios_lints: ^7.0.0 copied to clipboard
A collection of the linting rules I use for Flutter/Dart projects and packages
These are the linting rules I use for my Flutter and Dart projects
Getting started #
Add this package to your dev_dependencies in pubspec.yaml
:
dev_dependencies:
rexios_lints: latest
Goal #
The goal of these rules is to enforce code consistency without being annoying. All of the rules in this package were added because of real-life issues I've encountered in projects.
Usage #
This package includes four different sets of linting rules. Add the relevant line to the top of your analysis_options.yaml
file.
Dart project:
include: package:rexios_lints/dart/core.yaml
Dart package:
include: package:rexios_lints/dart/package.yaml
Flutter project:
include: package:rexios_lints/flutter/core.yaml
Flutter package:
include: package:rexios_lints/flutter/package.yaml
Justification #
core #
- Safety
- Undeclared return types are
dynamic
. This is almost never intentional. Either declarevoid
or explicitly declaredynamic
.
- Readability
- Relative imports make it hard to see where a file is coming from
avoid_types_on_closure_parameters
- Brevity
- The type checker can inform you of the type if you need to see it
conditional_uri_does_not_exist
- Safety
- Without this rule there is no warning if a conditional import does not exist
leading_newlines_in_multiline_strings
- Readability
- Not all languages ignore a leading newline in multiline strings. Dart does, and it's more readable. No more remembering if Dart supports it or not.
- Brevity
- The type checker can inform you of the type if you need to see it
- Safety
- Prevents accidental reassignment
- Safety
- Prevents accidental reassignment
- Consistency
- Enforces consistency with the rest of the Dart ecosystem
- Readability
- Prevents excessively long lines
- Safety
- Ensures that async calls in async methods aren't accidentally ignored
- Brevity
- Switch cases no longer need explicit break statements as of Dart 3
- Brevity
Widget
s using tear-offs can be declaredconst
in some cases- This can expose unsafe usage of
dynamic
types
- Brevity
- It's easy to end up with extra parenthesis when refactoring
flutter/core #
- Performance
- A
ColoredBox
is more performant than aContainer
with acolor
property
- Performance
- A
DecoratedBox
is more performant than aContainer
with adecoration
property
package #
- Enforces documentation. Promotes code readability and maintenance. Also ensures a good documentation score from
pana
.