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.5k
BLoC
flutter meetup #2の資料です
Shinnosuke Kugimiya
May 31, 2018
Tweet
Share
More Decks by Shinnosuke Kugimiya
See All by Shinnosuke Kugimiya
15分で分かった気になる dumpsys
kgmyshin
0
92
UIテストはもうMaestroでいいのかもしれない話
kgmyshin
28
13k
新規開発を始めるときにやるべきこと
kgmyshin
19
8.8k
android app error handling
kgmyshin
1
1.4k
solid+cqs+dry
kgmyshin
35
9.9k
Paging Library ~ アイテムの更新 ~
kgmyshin
2
3.3k
KotlinでReact Native(expo) を使いたい
kgmyshin
2
1.1k
新規チームで新規開発を始める時にやること
kgmyshin
40
9k
android-multi-module-with-dagger
kgmyshin
10
6.2k
Other Decks in Programming
See All in Programming
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
17
4k
Better Code Design in PHP
afilina
0
170
DRFを少しずつ オニオンアーキテクチャに寄せていく DjangoCongress JP 2025
nealle
2
270
Jakarta EE meets AI
ivargrimstad
0
340
Amazon Q Developer Proで効率化するAPI開発入門
seike460
PRO
0
120
Djangoにおける複数ユーザー種別認証の設計アプローチ@DjangoCongress JP 2025
delhi09
PRO
4
470
お前もAI鬼にならないか?👹Bolt & Cursor & Supabase & Vercelで人間をやめるぞ、ジョジョー!👺
taishiyade
7
4.2k
sappoRo.R #12 初心者セッション
kosugitti
0
280
Jasprが凄い話
hyshu
0
160
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
860
Generating OpenAPI schema from serializers throughout the Rails stack - Kyobashi.rb #5
envek
1
380
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
1k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
KATA
mclloyd
29
14k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Docker and Python
trallard
44
3.3k
Designing for humans not robots
tammielis
250
25k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
How STYLIGHT went responsive
nonsquared
98
5.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Building Applications with DynamoDB
mza
93
6.2k
How GitHub (no longer) Works
holman
314
140k
Building Your Own Lightsaber
phodgson
104
6.2k
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Λ͏ ·ͱΊ