DEV Community

May Lau
May Lau

Posted on • Originally published at maylau.hashnode.dev

3 Steps to Migrate to Lint 2.0

Flutter 3.0 introduce along with the lint 2.0. For project created after flutter 3.0 will automatically use the lint 2.0, but for project created previously required to migrate manually.

1. Add flutter_lints package to dev dependance

flutter pub add flutter_lints --dev
Enter fullscreen mode Exit fullscreen mode

2. Add analysis_options.yaml to root level

# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.

# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml

linter:
 # The lint rules applied to this project can be customized in the
 # section below to disable rules from the `package:flutter_lints/flutter.yaml`
 # included above or to enable additional rules. A list of all available lints
 # and their documentation is published at
 # https://dart-lang.github.io/linter/lints/index.html.
 #
 # Instead of disabling a lint rule for the entire project in the
 # section below, it can also be suppressed for a single line of code
 # or a specific dart file by using the `// ignore: name_of_lint` and
 # `// ignore_for_file: name_of_lint` syntax on the line or in the file
 # producing the lint.
 rules:
   # avoid_print: false  # Uncomment to disable the `avoid_print` rule
   # prefer_single_quotes: true  # Uncomment to enable the `prefer_single_quotes` rule

# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
Enter fullscreen mode Exit fullscreen mode

3. Fix Reported Issues

Command Fix

According to the document, most of the issues can be fixed by running:

dart fix --apply
Enter fullscreen mode Exit fullscreen mode

IDE Fix

For those hard to be command fixed, IDE can help use to fix most of them.

const everywhere ide

child position ide

Manual Fix

Most frequent issue I got is the Avoid using private types in public APIs.

@override
_MyWidgetState createState() => _MyWidgetState();
Enter fullscreen mode Exit fullscreen mode

Most of them should related to the State class. From the latest document:

Subclasses should override this method to return a newly created instance of their associated State subclass:

@override
State<MyWidget> createState() => _MyWidgetState();
Enter fullscreen mode Exit fullscreen mode

Another issue I got most in my packages is the Publishable packages can't have 'path' dependencies.

path edit

For my case, it is example project which gets the error. Since it is not publishable, I have added the publish_to: none to solve the issue.

Reference:

Introducing package:flutter_lints

Support me if you like the content🍖
ko-fi

Connect🍻
GitHub - MayLau-CbL

Twitter - @MayLauDev

Hashnode - @MayLau

Top comments (0)