🤖

riverpod_lintを使ってみる

2024/08/03に公開

👤対象者

  • riverpod_lintを使ってみたいひと
  • 設定の仕方わからない人

https://pub.dev/packages/riverpod_lint

riverpod_lintってのを追加して入れてるけど全然使ってない笑
今回は、簡単にですが導入方法について解説します。

add riverpod:

flutter pub add \
flutter_riverpod \
riverpod_annotation \
dev:riverpod_generator \
dev:build_runner \
dev:custom_lint \
dev:riverpod_lint

analysis_options.yamlを修正する。

rules: はコメントアウトして、custom_lint:を追加する。

# 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

analyzer:
  plugins:
    - custom_lint

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.dev/lints.
  #
  # 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:
  custom_lint:
  rules:
    # Explicitly disable one lint rule
    - missing_provider_scope: false
    
    # 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

これがあると何が起きるのか

エディターがたまに反応しない時があるので、その時は再起動してください。yamlファイルを設定したら、リントのチェックはされるはずです。

ProviderScopeがないと警告が出るようになる!
はい、これで書き忘れを防止できます。

Bad:

おろろ、ニョロニョロが出てきた笑

サジェスト(提案機能)が出てきたので、追加するように提案されたので、しましょう。constまでつければOK


StatelessWidgetを変更

StatelessWidgetの上で、command + . か右クリックで、ConsumerWidget, ConsumerStatefulWidgetに書き換えてくれます。ありがたい笑
WidgetRef refの設定もしてくれる。

ConsumerWidget:

ConsumerStatefulWidget:

Providerに引数がないと警告が出る

書くと思いますが、時々忘れてる時に、警告を出してもらって気づくようになります。「疲れている時に忘れそう。」

Good:

Bad:

正しく修正すると警告は消えます。引数には、先頭が大文字の値に、Refをつける必要があります。MyProviderRefといった感じですね。

async_value_nullable_patttern
Warn if the pattern AsyncValue(:final value?) is used when the data is possibly nullable.

これは再現できなかった???

switch case ではなくて、いつもの3つ書く方法で再現した。?があると警告が出てくる。

感想

公式の解説を真似してみたもののリントの警告が出ないものもあった💦
ドキュメントも親切でないことがある。

学習の参考になった記事があるのでリンク貼っておきます。
https://blog.dalt.me/3697
https://zenn.dev/k9i/articles/711eb36d6a27e9
https://qiita.com/K9i-0/items/7d3c701cf4accc6ce3dc

Discussion