Riverpodに機能追加したときの話 (long ver.)第4回 FlutterGakkaiKota Hayashi (K9i)
View Slide
自己紹介
YUMEMIについて- Flutterにも力入れてます- 新卒エンジニアとリードエンジニアを募集中
YUMEMIについて- Flutterにも力入れてます- 新卒エンジニアとリードエンジニアを募集中定期的に勉強会を開催中タイミングがあったら参加してね
Riverpod?- 日本だと特に人気が高い状態管理ライブラリ- 最近はデファクトスタンダード?- 世界的にはBLoCなんかも人気- https://docs-v2.riverpod.dev/
追加した機能
追加した機能Riverpod関連のWidgetを相互に変換する
BaseとなるWidgetの変換(Before)
BaseとなるWidgetの変換(Before)flutter, flutter_riverpodパケージのWidgetをConsumerWidgetかConsuerStatefulWidgetに変換可能
BaseとなるWidgetの変換(After)
BaseとなるWidgetの変換(After)すべて相互に変換可能
変更したパッケージ- Riverpodはマルチパッケージ構成- riverpod- flutter_riverpod- hooks_riverpod- riverpod_generator- riverpod_lint- など
変更したパッケージ- Riverpodはマルチパッケージ構成- riverpod- flutter_riverpod- hooks_riverpod- riverpod_generator- riverpod_lint- などMelostというDart向けのマルチパッケージ管理ツールが使われているhttps://melos.invertase.dev/~melos-latest
変更したパッケージ- Riverpodはマルチパッケージ構成- riverpod- flutter_riverpod- hooks_riverpod- riverpod_generator- riverpod_lint- など変更したのはこれ
機能追加の流れ1. Notionに既存処理の流れを洗い出した
機能追加の流れ1. Notionに既存処理の流れを洗い出した2. custom_lint_builderの使い方をキャッチアップ
custom_lint_builderの使い方をキャッチアップ- riverpod_lintはcustom_lint_builderパッケージで実現されている- 使い方の説明はcustom_lintパッケージのreadme- https://pub.dev/packages/custom_lint#creating-a-custom-lint-package
機能追加の流れ1. Notionに既存処理の流れを洗い出した2. custom_lint_builderの使い方をキャッチアップ3. 実装4. hooks関連の問題発生
hooks関連の問題発生- HookWidgetなどはhooks_riverpodを使ってるときだけ変換したい →custom_lintで利用パッケージを知るすべが無い
図解これらはオプションにしたいしかしcustom_lintからプロジェクトの利用パッケージを取得できない
remiさんがcustom_lintを修正してくれた
remiさんがcustom_lintを修正してくれたcustom_lintの変更PRhttps://github.com/invertase/dart_custom_lint/pull/137Changeloghttps://pub.dev/packages/custom_lint_builder/changelog#033---2023-04-06
custom_lintの補足- Dart、Flutter用にオリジナルのlintルールを作れる要チェックパッケージ- lintを利用する:custom_lintパッケージ- lintを開発する:custom_lint_builderパッケージ- Invertaseが開発してる- といいつつほぼremiさんが作ってる?- riverpod_lintの開発の中で改良されてる感があり、custom_lint_builderを使うときはriverpod_lintが参考になる
無事リリース🥳
無事リリース🥳機能追加とかすると Changelogに書いてもらえる自分でOSSするときも参考にすると良さそうな運用
おわり- Riverpod関連のWidgetを変換する機能を追加したよ- 今回の実装のPR- https://github.com/rrousselGit/riverpod/pull/2306