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
78
UIテストはもうMaestroでいいのかもしれない話
kgmyshin
27
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
8.8k
android-multi-module-with-dagger
kgmyshin
10
6.1k
Other Decks in Programming
See All in Programming
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
770
Lookerは可視化だけじゃない。UIコンポーネントもあるんだ!
ymd65536
1
130
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
1.3k
AWS re:Invent 2024個人的まとめ
satoshi256kbyte
0
100
return文におけるstd::moveについて
onihusube
1
1.4k
ある日突然あなたが管理しているサーバーにDDoSが来たらどうなるでしょう?知ってるようで何も知らなかったDDoS攻撃と対策 #phpcon.2024
akase244
2
7.7k
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
3
190
Flatt Security XSS Challenge 解答・解説
flatt_security
0
730
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
370
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
580
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
930
functionalなアプローチで動的要素を排除する
ryopeko
1
190
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
173
51k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
Optimising Largest Contentful Paint
csswizardry
33
3k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
240
Six Lessons from altMBA
skipperchong
27
3.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
For a Future-Friendly Web
brad_frost
176
9.5k
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Λ͏ ·ͱΊ