Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Riverpodに機能追加したときの話 (long ver.)
Search
K9i - Kota Hayashi
July 14, 2023
Programming
0
380
Riverpodに機能追加したときの話 (long ver.)
K9i - Kota Hayashi
July 14, 2023
Tweet
Share
More Decks by K9i - Kota Hayashi
See All by K9i - Kota Hayashi
北九州でFlutterハンズオンをしたので雑多に振り返る
k9i
0
55
FFF(Fukuoka Flutter Fanclub)の紹介
k9i
0
78
Flutter Favoriteプログラムについて調べてみた
k9i
0
1.2k
2023年のFlutter(オフライン)イベントを振り返る
k9i
0
210
Flutterの魅力とコミュニティ活動
k9i
0
400
Flutterエンジニア向け?おすすめmac向けアプリ
k9i
0
400
ゆめみの謎制度「フルリモし放題制度 ㊗️ MAX」で買ったものを紹介します
k9i
0
440
Flutter導入時に警戒すべき要件X選
k9i
1
780
FlutterでTikTokログインができるパッケージを作った話 (short ver.)
k9i
0
670
Other Decks in Programming
See All in Programming
20250326_生成AIによる_レビュー承認システムの実現.pdf
takahiromatsui
17
5.5k
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
5
820
複雑なフォームと複雑な状態管理にどう向き合うか / #newt_techtalk vol. 15
izumin5210
4
3k
Going Structural with Named Tuples
bishabosha
0
170
小さく段階的リリースすることで深夜メンテを回避する
mkmk884
2
130
英語文法から学ぶ、クリーンな設計の秘訣
newnomad
1
270
RubyKaigiで手に入れた HHKB Studioのための HIDRawドライバ
iberianpig
0
1k
SLI/SLOの設定を進めるその前に アラート品質の改善に取り組んだ話
tanden
2
730
プログラミング教育のコスパの話
superkinoko
0
120
신입 안드로이드 개발자의 AI 스타트업 생존기 (+ Native C++ Code를 Android에서 사용해보기)
dygames
0
500
GDG Super.init(version=6) - From Where to Wear : 모바일 개발자가 워치에서 발견한 인사이트
haeti2
0
560
S3静的ホスティング+Next.js静的エクスポート で格安webアプリ構築
iharuoru
0
190
Featured
See All Featured
Statistics for Hackers
jakevdp
798
220k
For a Future-Friendly Web
brad_frost
176
9.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
12
610
Building an army of robots
kneath
304
45k
Embracing the Ebb and Flow
colly
85
4.6k
How STYLIGHT went responsive
nonsquared
99
5.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
28
1.6k
GitHub's CSS Performance
jonrohan
1030
460k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Designing for Performance
lara
606
69k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.4k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.5k
Transcript
Riverpodに機能追加したとき の話 (long ver.) 第4回 FlutterGakkai Kota Hayashi (K9i)
自己紹介
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に既存処理の流れを洗い出した
None
機能追加の流れ 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の変更 PR https://github.com/invertase/dart_custom_lint/p ull/137 Changelog https://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