Slide 1

Slide 1 text

Riverpodに機能追加したとき の話 (long ver.) 第4回 FlutterGakkai Kota Hayashi (K9i)

Slide 2

Slide 2 text

自己紹介

Slide 3

Slide 3 text

YUMEMIについて - Flutterにも力入れてます - 新卒エンジニアとリードエンジニアを募集中

Slide 4

Slide 4 text

YUMEMIについて - Flutterにも力入れてます - 新卒エンジニアとリードエンジニアを募集中 定期的に勉強会を開催中 タイミングがあったら参加してね

Slide 5

Slide 5 text

Riverpod? - 日本だと特に人気が高い状態管理ライブラリ - 最近はデファクトスタンダード? - 世界的にはBLoCなんかも人気 - https://docs-v2.riverpod.dev/

Slide 6

Slide 6 text

追加した機能

Slide 7

Slide 7 text

追加した機能 Riverpod関連のWidget を相互に変換する

Slide 8

Slide 8 text

BaseとなるWidgetの変換(Before)

Slide 9

Slide 9 text

BaseとなるWidgetの変換(Before) flutter, flutter_riverpodパケージのWidgetを ConsumerWidgetかConsuerStatefulWidgetに変 換可能

Slide 10

Slide 10 text

BaseとなるWidgetの変換(After)

Slide 11

Slide 11 text

BaseとなるWidgetの変換(After) すべて相互に変換可能

Slide 12

Slide 12 text

変更したパッケージ - Riverpodはマルチパッケージ構成 - riverpod - flutter_riverpod - hooks_riverpod - riverpod_generator - riverpod_lint - など

Slide 13

Slide 13 text

変更したパッケージ - Riverpodはマルチパッケージ構成 - riverpod - flutter_riverpod - hooks_riverpod - riverpod_generator - riverpod_lint - など MelostというDart向けのマ ルチパッケージ管理ツール が使われている https://melos.invertase.dev /~melos-latest

Slide 14

Slide 14 text

変更したパッケージ - Riverpodはマルチパッケージ構成 - riverpod - flutter_riverpod - hooks_riverpod - riverpod_generator - riverpod_lint - など 変更したのはこれ

Slide 15

Slide 15 text

機能追加の流れ 1. Notionに既存処理の流れを洗い出した

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

機能追加の流れ 1. Notionに既存処理の流れを洗い出した 2. custom_lint_builderの使い方をキャッチアップ

Slide 18

Slide 18 text

custom_lint_builderの使い方をキャッチアップ - riverpod_lintはcustom_lint_builderパッケージで実現されている - 使い方の説明はcustom_lintパッケージのreadme - https://pub.dev/packages/custom_lint#creating-a-custom -lint-package

Slide 19

Slide 19 text

機能追加の流れ 1. Notionに既存処理の流れを洗い出した 2. custom_lint_builderの使い方をキャッチアップ 3. 実装 4. hooks関連の問題発生

Slide 20

Slide 20 text

hooks関連の問題発生 - HookWidgetなどはhooks_riverpodを使ってるときだけ変換したい → custom_lintで利用パッケージを知るすべが無い

Slide 21

Slide 21 text

図解 これらはオプションにしたい しかしcustom_lintからプロジェクトの利用 パッケージを取得できない

Slide 22

Slide 22 text

remiさんがcustom_lintを修正してくれた

Slide 23

Slide 23 text

remiさんがcustom_lintを修正してくれた custom_lintの変更 PR https://github.com/invertase/dart_custom_lint/p ull/137 Changelog https://pub.dev/packages/custom_lint_builder/ changelog#033---2023-04-06

Slide 24

Slide 24 text

custom_lintの補足 - Dart、Flutter用にオリジナルのlintルールを作れる要チェックパッケージ - lintを利用する:custom_lintパッケージ - lintを開発する:custom_lint_builderパッケージ - Invertaseが開発してる - といいつつほぼremiさんが作ってる? - riverpod_lintの開発の中で改良されてる感があり、 custom_lint_builderを使うときはriverpod_lintが参考になる

Slide 25

Slide 25 text

無事リリース🥳

Slide 26

Slide 26 text

無事リリース🥳 機能追加とかすると Changelogに書いてもらえ る 自分でOSSするときも参考にすると良さそうな 運用

Slide 27

Slide 27 text

おわり - Riverpod関連のWidgetを変換する機能を追加したよ - 今回の実装のPR - https://github.com/rrousselGit/riverpod/pull/2306