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
BLoC
Search
Shinnosuke Kugimiya
May 31, 2018
Programming
9
1.6k
BLoC
flutter meetup #2の資料です
Shinnosuke Kugimiya
May 31, 2018
Tweet
Share
More Decks by Shinnosuke Kugimiya
See All by Shinnosuke Kugimiya
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
890
15分で分かった気になる dumpsys
kgmyshin
1
240
UIテストはもうMaestroでいいのかもしれない話
kgmyshin
28
13k
新規開発を始めるときにやるべきこと
kgmyshin
19
9k
android app error handling
kgmyshin
1
1.5k
solid+cqs+dry
kgmyshin
35
10k
Paging Library ~ アイテムの更新 ~
kgmyshin
2
3.3k
KotlinでReact Native(expo) を使いたい
kgmyshin
2
1.2k
新規チームで新規開発を始める時にやること
kgmyshin
40
9.2k
Other Decks in Programming
See All in Programming
童醫院敏捷轉型的實踐經驗
cclai999
0
190
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
260
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
390
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
17
4.9k
XSLTで作るBrainfuck処理系
makki_d
0
210
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
440
Go1.25からのGOMAXPROCS
kuro_kurorrr
1
810
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
320
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
110
関数型まつりレポート for JuliaTokai #22
antimon2
0
150
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
350
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
320
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Transcript
© DMM.com !LHNZTIJO 'MVUUFS.FFUVQ5PLZP #-P$
© DMM.com w LHNZTIJOఝٶ ͗͘Έ w "OESPJEΤϯδχΞ w %..DPNϥϘ$50ࣨॴଐ
w ݄͔Β ࣗݾհ
© DMM.com BHFOEB
© DMM.com w #-P$ͱ w #-P$ͷΨΠυϥΠϯ w #-P$ͱ6* w #-P$ͷྫ
w 'MVUUFSͰͷ͍ํ w ·ͱΊ BHFOEB
© DMM.com #-P$ͱ
© DMM.com #-P$ͱ Business Logic Component
© DMM.com #-P$ͱ ͕ࣗͬͨͷ(PPHMF*0ͰͷԼهͷηογϣϯ Build reactive mobile apps with
Flutter IUUQTXXXZPVUVCFDPNXBUDI W34H#&Q0*
© DMM.com #-P$ͱ ࣮ࡍ݄ʹ%BSU$POGͷ ԼهͷηογϣϯͰൃද͞Ε͍ͯΔ Flutter / AngularDart –
Code sharing, better together IUUQTXXXZPVUVCFDPNXBUDI W1-)MOX)H1&
© DMM.com #-P$ͱ ϏδωεϩδοΫΛ UIϓϥοτϑΥʔϜ͔Β ͢ΔͨΊͷ ઃܭύλʔϯͷҰͭ ҰݴͰݴ͏ͱ Ͱ͋Δ
© DMM.com #-P$ͷϞνϕʔγϣϯ 6* .PEFM *OGSB ͜͏͍͏ঢ়ଶΛ .PEFM .PEFM
.PEFM
© DMM.com #-P$ͷϞνϕʔγϣϯ 6* .PEFM *OGSB ͜͏͍ͨ͠ 91MBUGPSN"EBQUFS
© DMM.com #-P$ͷΨΠυϥΠϯ
© DMM.com #-P$ͷΨΠυϥΠϯ JOQVUTBOEPVUQVUTBSFTJNQMF4USFBNT4JOLTPOMZ %FQFOEFODJFTNVTUCFJOKFDUBCMFBOEQMBUGPSN BHOPTUJD
/PQMBUGPSNCSBODIJOHBMMPXFE *NQMFNFOUBUJPODBOCFXIBUFWFSZPVXBOUJGZPV GPMMPXUIFQSFWJPVTSVMFT " #VUNBZ*TVHHFTUSFBDUJWFQSPHSBNNJOH
© DMM.com #-P$ͷΨΠυϥΠϯ JOQVU4JOLɺPVUQVU4USFBNͰ࣮͢Δ ґଘΦϒδΣΫτ֎͔ΒೖՄೳͰɺϓϥοτ ϑΥʔϜʹґଘ͠ͳ͍ͷͰ͋Δ͜ͱ
ϓϥοτϑΥʔϜͷذμϝ dΛकͬͯΕɺ࣮ͳΜͰ͍͍Α ͨͩ͠ɺ3FBDUJWF1SPHSBNNJOHͰΉͷ͕͓͢͢ΊͩΑ
© DMM.com #-P$ͱ6*ͷܨ͗
© DMM.com #-P$ͱ6*ͷܨ͗ &BDIDPNQMFYFOPVHIDPNQPOFOUIBTB DPSSFTQPOEJOH#-P$ $PNQPOFOUTTIPVMETFOEJOQVUTBTJTz
$PNQPOFOUTTIPVMETIPXPVUQVUTBTDMPTFBT QPTTJCMFUPBTJTz "MMCSBODIJOHTIPVMECFCBTFEPOTJNQMF#-P$ CPPMFBOPVUQVUT
© DMM.com #-P$ͷΨΠυϥΠϯ ͦΕͧΕͷzेʹෳࡶͳzίϯϙʔωϯτʹ#-P$ ͕Ұͭ͋Δʢzेʹෳࡶͳzͷ߹͍֤ࣗͰஅʣ JOQVUʹૹΔσʔλBTJTͰ
PVUQVUʹྲྀ͢ετϦʔϜͰ͖Δ͚ͩlBTJTzͰ ͯ͢ͷذ#-P$ʹΑΔ#PPMFBOͳΞτϓοτ ʹج͖ͮ͘Ͱ͋Δ
© DMM.com #-P$ͷྫ
© DMM.com #-P$ͷྫ class CartBLoC { Sink<Product> addition; Stream<int>
itemCount; Stream<String> totalCost; Stream<List<CartItem>> items; }
© DMM.com #-P$ͷྫ class CartBLoC { Sink<Product> addition; Stream<int>
itemCount; Stream<String> totalCost; Stream<List<CartItem>> items; } 1SPEVDU͕Ճ͞ΕΔͱ
© DMM.com #-P$ͷྫ class CartBLoC { Sink<Product> addition; Stream<int>
itemCount; Stream<String> totalCost; Stream<List<CartItem>> items; } ͦΕͧΕͷ4USFBN͔Β݁Ռ͕ྲྀΕΔ
© DMM.com 'MVUUFSͰͷ͍ํ
© DMM.com JOQVUͷܨ͛ํ TextField( onChanged: bloc.sink.add, decoration: InputDecoration( border:
OutlineInputBorder(), ɹɹɹ hintText: “hint"), )
© DMM.com JOQVUͷܨ͛ํ TextField( onChanged: bloc.sink.add, decoration: InputDecoration( border:
OutlineInputBorder(), ɹɹɹ hintText: “hint"), ) ΠϕϯτͱTJOLBEEΛόΠϯυ͢Δ͚ͩ
© DMM.com PVUQVUΛ6*ʹͭͳ͛Δํ๏ StreamBuilder<String>( stream: bloc.stream, builder: (context, snapshot)
=> Container( child: Text(snapshot?.data ?? ""), ), )
© DMM.com PVUQVUΛ6*ʹͭͳ͛Δํ๏ StreamBuilder<String>( stream: bloc.stream, builder: (context, snapshot)
=> Container( child: Text(snapshot?.data ?? ""), ), ) 4USFBN#VJMEFS͏͚ͩ
© DMM.com ·ͱΊ
© DMM.com w #-P$6*ͱ.PEFMͱ*OGSBΛ͚Δ͜ͱͱɺΫϩε ϓϥοτϑΥʔϜͷίʔυγΣΞΛϞνϕʔγϣϯ ʹੜ·Εͨ w कΔ͖ΨΠυϥΠϯ͕͋Δ w
'MVUUFSͰ w JOQVUΛૹΔͱ͜ΖͰTJOLBEEΛόΠϯυ͢Δ w PVUQVUΛTVCTDSJCF͢Δʹ4USFBN#VJMEFSΛ͏ ·ͱΊ