3 Steps to Migrate to Lint 2.0
Tags: flutter
Published: 2022-07-12 12:51:24

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

```dart
flutter pub add flutter_lints --dev
```

## 2. Add analysis_options.yaml to root level

```yaml
# 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
```

## 3. Fix Reported Issues

### Command Fix

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

```bash
dart fix --apply
```

### IDE Fix

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



![const everywhere ide](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rlb9ae7iosuvp10452l2.png)



![child position ide](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s7svhz1kvbw1erki356e.png)

### Manual Fix

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

```dart
@override
_MyWidgetState createState() => _MyWidgetState();
```

Most of them should related to the State class. From the latest [document](https://api.flutter.dev/flutter/widgets/StatefulWidget/createState.html):

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

```dart
@override
State<MyWidget> createState() => _MyWidgetState();
```

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



![path edit](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4mxfpk1km173bzxxlbtd.png)

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](https://docs.flutter.dev/release/breaking-changes/flutter-lints-package)



**Support me if you like the content🍖**
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/N4N8D1EWN)




**Connect🍻**
[![GitHub - MayLau-CbL](https://img.shields.io/badge/GitHub-MayLau--CbL-informational?style=for-the-badge&logo=github)](https://github.com/MayLau-CbL)

[![Twitter - @MayLauDev](https://img.shields.io/badge/Twitter-%40MayLauDev-informational?style=for-the-badge&logo=twitter)](https://twitter.com/MayLauDev)

[![Hashnode - @MayLau](https://img.shields.io/badge/Hashnode-%40MayLau-informational?style=for-the-badge&logo=hashnode)](https://maylau.hashnode.dev/)