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
390
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
59
FFF(Fukuoka Flutter Fanclub)の紹介
k9i
0
85
Flutter Favoriteプログラムについて調べてみた
k9i
0
1.2k
2023年のFlutter(オフライン)イベントを振り返る
k9i
0
220
Flutterの魅力とコミュニティ活動
k9i
0
410
Flutterエンジニア向け?おすすめmac向けアプリ
k9i
0
410
ゆめみの謎制度「フルリモし放題制度 ㊗️ MAX」で買ったものを紹介します
k9i
0
450
Flutter導入時に警戒すべき要件X選
k9i
1
800
FlutterでTikTokログインができるパッケージを作った話 (short ver.)
k9i
0
690
Other Decks in Programming
See All in Programming
CQRS/ESのクラスとシステムフロー ~ RailsでフルスクラッチでCQRSESを組んで みたことから得た学び~
suzukimar
0
190
List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate'"
philipschwarz
PRO
0
130
Use Perl as Better Shell Script
karupanerura
0
650
TypeScriptのmoduleオプションを改めて整理する
bicstone
4
420
TypeScript LSP の今までとこれから
quramy
0
100
事業戦略を理解してソフトウェアを設計する
masuda220
PRO
3
430
Investigating Multithreaded PostgreSQL
macdice
0
150
TSConfigからTypeScriptの世界を覗く
planck16
2
1.3k
What Spring Developers Should Know About Jakarta EE
ivargrimstad
1
600
Javaのルールをねじ曲げろ!禁断の操作とその代償から学ぶメタプログラミング入門 / A Guide to Metaprogramming: Lessons from Forbidden Techniques and Their Price
nrslib
1
150
少数精鋭エンジニアがフルスタック力を磨く理由 -そしてAI時代へ-
rebase_engineering
0
130
Agent Rules as Domain Parser
yodakeisuke
1
340
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Unsuck your backbone
ammeep
671
58k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
620
BBQ
matthewcrist
88
9.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
What's in a price? How to price your products and services
michaelherold
245
12k
Navigating Team Friction
lara
186
15k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
15
890
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