概要
どうも、@daiki1003です!riverpod、便利ですよね。
2023年2月13日、riverpod_lintの1.0.0がリリースされました。
本記事では、
・riverpod_lint気になってた!
・どんなことできるの?
な、あなたに役立つような記事になっているかなと思うので是非ご一読いただければと思います。
それでは早速行ってみましょー!
筆者環境
| 名前 | バージョン |
| Flutter | 3.7.3 |
| Dart | 2.19.2 |
| hooks_riverpod | 2.2.0 |
| riverpod_lint | 1.0.0 |
riverpod_lint導入
まずは、使えるようにしないと話になりません。
基本的には、riverpod_lintのREADME.mdに書いている通りですが。
packageのインストール
custom_lintとriverpod_lintをpubspec.yamlのdev_dependenciesに追加します。
dev_dependencies: custom_lint: riverpod_lint:
flutter pub getなどでインストールします。
custom_lintの有効化
analysis_options.ymlを下記のように変更します。
analyzer:
plugins:
- custom_lint
ymlはインデントも大事なのでそっくりこのまま入力してくださいね。
もちろん、他にもpluginを利用している場合は、少し見た目は変わってくると思います。
ここまでを正しく行えていれば、正常に動いているはずです。
警告の有効化/無効化
通常の警告の有効化/無効化と同様に、analysis_options.ymlを編集します。
analyzer:
plugins:
- custom_lint
custom-lint:
rules:
- missing_provider_scope: false
何もしなければ、警告は基本的に有効になっておりrulesには無効化したいものを指定するオプトアウト方式となっています。
逆にオプトイン方式にしたければ以下のように記述します。
analyzer:
plugins:
- custom_lint
custom-lint:
# 基本的に無効
enable_all_lint_rules: false
rules:
# これだけ有効
- missing_provider_scope
これで、missing_provider_scopeのみが有効となります。
警告
missing_provider_scope
runApp内をProviderScopeでラップしていない場合に怒ってくれます。
たまーに、やらかすんですよね笑
provider_parameters
familyを使ったProviderの引数に、==がoverrideされていない型のインスタンスを渡すと警告してくれます。
詳しくはこちらに。
stateless_ref
stateless providerに対して、@riverpodを付与する場合には、第一引数に[メソッド名]Refの引数が必要です。
これを守れていない際に警告を出してくれます。
generator_class_extends
stateful providerに@rirverpodを付与する場合には、extends _$[クラス名]が必要です。
これを守れていない際に警告を出してくれます。
アシスト
riverpod_lintはlinterとしてだけでなく、riverpodの開発者体験も少し向上してくれます。
そんなアシスト機能をご紹介!
Consumerによるラップ
コンテキストメニューというのかな?笑
ここに、Consumerでラップするオプションが追加されます。
地味に、Consumerでラップする時って書くこと多いので助かりますね!
ProviderScopeによるラップ
同様に、ProviderScopeでラップするオプションが追加されます。
ConsumerWidget/ConsumerStatefulWidgetへの変更
既存のStatelessWidgetをConsumerWidgetないしConsumerStatefulWidgetに変更してくれます。ConsumerWidgetにする際、以下の変更を手作業でやっていたので自動でやってくれるのは地味に嬉しいです笑
Widget build(BuildContext context)
↓Widget build(BuildContext context, WidgetRef ref)
stateful provider, stateless providerのスイッチ
@riverpod int myProvider(MyProviderRef ref) => 0;
と
@riverpod
class MyProvider extends _$MyProvider {
@override
int build() => 0;
}
をそれぞれスイッチしてくれます。
最後に
今の所出ている機能は以上です。
今後追加され次第、アップデートしていこうと思います。
それでは、ハッピーriverpodライフを!
Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!








コメント