概要
どうも、@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
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント