riverpod_lintを使ってみる
👤対象者
- 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つ書く方法で再現した。?
があると警告が出てくる。
感想
公式の解説を真似してみたもののリントの警告が出ないものもあった💦
ドキュメントも親切でないことがある。
学習の参考になった記事があるのでリンク貼っておきます。
Discussion