flutter_sane_lints

Last updated:

0 purchases

flutter_sane_lints Image
flutter_sane_lints Images
Add to Cart

Description:

flutter sane lints

Flutter Sane Lints #



A custom lint plugin to try and improve maintainability in Flutter projects by disallowing certain anti-patterns.
At the moment, the only dart lint rule in this plugin is to avoid declaring ad-hoc strings inside Widget/State classes, or passing a literal to a Widget constructor.
Every String used for presentation (such as in a Text widget) should be defined in a l10n file. See Flutter Internationalization Tutorial.
Every String used for logic (such as in a switch statement) should be defined as an Enum or in any other way that makes sense for the use case while following good OO design. Using strings is a clear sign of primitive obsession and should be avoided.
Created with the Very Good CLI 💙
Installation 💻 #
❗ In order to start using Flutter Sane Lints you must have the Flutter SDK installed on your machine.
Add flutter_sane_lints and custom_lint to your pubspec.yaml:
dev_dependencies:
custom_lint:
flutter_sane_lints:
copied to clipboard
Install it:
flutter pub get
copied to clipboard

Usage 🚀 #
Add the custom_lint package to your analysis_options.yaml:
analyzer:
plugins:
- custom_lint
copied to clipboard

Available rules #
At the moment this plugin contains only 2 rules:

avoid_string_literals_inside_widget

This rule is equivalent to the Android's hard-coded string literals lint.

avoid_if_with_enum

This rule is made to be used alongside the existing exhaustive_cases rule, as part of the default rules.
The existing Dart rule ensures you cover all enum cases in your switch statement, which is great for future-proofing your app. However, it does not raise a warning if you are using an if statement with your enum. This is bad, because using if with enum is the same as using a switch with default:
if (myValue == MyEnum.firstOption) {
doSomething();
}
copied to clipboard
is the same as
switch (myValue) {
case MyEnum.firstOption:
doSomething();
default:
// this default case violates exhaustive_cases
}
copied to clipboard
Therefore, using if statements with enum values violate Dart's rule of performing exhaustive switch.
Future work #
More rules will be added in the future, but in the meantime, I am open to requests. Please go to the issues page and request for further features.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.