nilts 0.4.0
nilts: ^0.4.0 copied to clipboard
nilts is lint rules, quick fixes and assists for Dart and Flutter projects that helps you enforce best practices, and avoid errors.
nilts #
nilts is lint rules, quick fixes and assists for Dart and Flutter projects that helps you enforce best practices, and avoid errors.
Contents #
Usage #
nilts depends on custom_lint
.
You should add nilts
and custom_lint
to your dev_dependencies
in pubspec.yaml
file.
dev_dependencies:
custom_lint: <version>
nilts: <version>
And also, add custom_lint
to your analysis_options.yaml
file.
analyzer:
plugins:
- custom_lint
Configuration #
You can configure all lint rules provided by nilts
in analysis_options.yaml
file.
Choice one of the following configuration strategies.
Disabling strategy #
All of nilts
rules are enabled by default.
Add lint rule name and set false
to disable it.
custom_lint:
rules:
# Disable particular lint rules if you want ignore them whole package.
- unnecessary_rebuilds_from_media_query: false
Enabling strategy #
You can disable all lint rules depends on custom_lint by setting enable_all_lint_rules
to false
.
Add lint rule name and set true
to enable it.
custom_lint:
# Disable all lint rules depends on custom_lint.
enable_all_lint_rules: false
rules:
- unnecessary_rebuilds_from_media_query: true
NOTE: If you enable_all_lint_rules
set to false
, all of lint rules (not only all of nilts's lint rules) depends on custom_lint
will be disabled by default.
Lint rules and quick fixes #
Read below to learn about each lint rules intend to.
Some of lint rules support quick fixes on IDE.
Overview #
Rule name | Overview | Target SDK | Rule type | Maturity level | Quick fix |
---|---|---|---|---|---|
fixed_text_scale_factor_rich_text | Checks usage of textScaleFactor in RichText constructor. |
Any versions nilts supports | Practice | Experimental | ✅️ |
flaky_tests_with_set_up_all | Checks setUpAll usages. |
Any versions nilts supports | Practice | Experimental | ✅️ |
unnecessary_rebuilds_from_media_query | Checks MediaQuery.xxxOf(context) or MediaQuery.maybeXxxOf(context) usages. |
>= Flutter 3.10.0 (Dart 3.0.0) | Practice | Experimental | ✅️ |
Details #
fixed_text_scale_factor_rich_text
- Target SDK: Any versions nilts supports
- Rule type: Practice
- Maturity level: Experimental
- Quick fix: ✅
Consider adding textScaleFactor
argument to RichText
constructor to make the text size responsive for user setting.
BAD:
RichText(
text: TextSpan(
text: 'Hello, world!',
),
)
GOOD:
RichText(
text: TextSpan(
text: 'Hello, world!',
),
textScaleFactor: MediaQuery.textScaleFactorOf(context),
)
See also:
flaky_tests_with_set_up_all
- Target SDK: Any versions nilts supports
- Rule type: Practice
- Maturity level: Experimental
- Quick fix: ✅
Consider using setUp
function or initialization on top level or body of test group.
setUpAll
may cause flaky tests with concurrency executions.
BAD:
setUpAll(() {
// ...
});
GOOD:
setUp(() {
// ...
});
void main() {
// do initialization on top level
// ...
group('...', () {
// or do initialization on body of test group
// ...
});
}
See also:
- setUpAll function - flutter_test library - Dart API
- setUp function - flutter_test library - Dart API
unnecessary_rebuilds_from_media_query
- Target SDK: >= Flutter 3.10.0 (Dart 3.0.0)
- Rule type: Practice
- Maturity level: Experimental
- Quick fix: ✅
Prefer using MediaQuery.xxxOf(context)
or MediaQuery.maybeXxxOf(context)
instead of MediaQuery.of(context)
or MediaQuery.maybeOf(context)
to avoid unnecessary rebuilds.
BAD:
final size = MediaQuery.of(context).size;
GOOD:
final size = MediaQuery.sizeOf(context);
Note that using MediaQuery.of(context)
or MediaQuery.maybeOf(context)
makes sense following cases:
- wrap Widget with
MediaQuery
overriddenMediaQueryData
- observe all changes of
MediaQueryData
See also:
- MediaQuery as InheritedModel by moffatman · Pull Request #114459 · flutter/flutter
- MediaQuery class - widgets library - Dart API
Assists #
Upcoming... 🚀
Feature requests #
If you have any feature requests, please create an issue from this template.
Bug reports #
If you find any bugs, please create an issue from this template.
Contributing #
Welcome your contributions!!
Please read CONTRIBUTING docs before submitting your PR.