BLoC
by
Shinnosuke Kugimiya
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
© DMM.com !LHNZTIJO 'MVUUFS.FFUVQ5PLZP #-P$
Slide 2
Slide 2 text
© DMM.com w LHNZTIJOఝٶ ͗͘Έ w "OESPJEΤϯδχΞ w %..DPNϥϘ$50ࣨॴଐ w ݄͔Β ࣗݾհ
Slide 3
Slide 3 text
© DMM.com BHFOEB
Slide 4
Slide 4 text
© DMM.com w #-P$ͱ w #-P$ͷΨΠυϥΠϯ w #-P$ͱ6* w #-P$ͷྫ w 'MVUUFSͰͷ͍ํ w ·ͱΊ BHFOEB
Slide 5
Slide 5 text
© DMM.com #-P$ͱ
Slide 6
Slide 6 text
© DMM.com #-P$ͱ Business Logic Component
Slide 7
Slide 7 text
© DMM.com #-P$ͱ ͕ࣗͬͨͷ(PPHMF*0ͰͷԼهͷηογϣϯ Build reactive mobile apps with Flutter IUUQTXXXZPVUVCFDPNXBUDI W34H#&Q0*
Slide 8
Slide 8 text
© DMM.com #-P$ͱ ࣮ࡍ݄ʹ%BSU$POGͷ ԼهͷηογϣϯͰൃද͞Ε͍ͯΔ Flutter / AngularDart – Code sharing, better together IUUQTXXXZPVUVCFDPNXBUDI W1-)MOX)H1&
Slide 9
Slide 9 text
© DMM.com #-P$ͱ ϏδωεϩδοΫΛ UIϓϥοτϑΥʔϜ͔Β ͢ΔͨΊͷ ઃܭύλʔϯͷҰͭ ҰݴͰݴ͏ͱ Ͱ͋Δ
Slide 10
Slide 10 text
© DMM.com #-P$ͷϞνϕʔγϣϯ 6* .PEFM *OGSB ͜͏͍͏ঢ়ଶΛ .PEFM .PEFM .PEFM
Slide 11
Slide 11 text
© DMM.com #-P$ͷϞνϕʔγϣϯ 6* .PEFM *OGSB ͜͏͍ͨ͠ 91MBUGPSN"EBQUFS
Slide 12
Slide 12 text
© DMM.com #-P$ͷΨΠυϥΠϯ
Slide 13
Slide 13 text
© DMM.com #-P$ͷΨΠυϥΠϯ JOQVUTBOEPVUQVUTBSFTJNQMF4USFBNT4JOLTPOMZ %FQFOEFODJFTNVTUCFJOKFDUBCMFBOEQMBUGPSN BHOPTUJD /PQMBUGPSNCSBODIJOHBMMPXFE *NQMFNFOUBUJPODBOCFXIBUFWFSZPVXBOUJGZPV GPMMPXUIFQSFWJPVTSVMFT " #VUNBZ*TVHHFTUSFBDUJWFQSPHSBNNJOH
Slide 14
Slide 14 text
© DMM.com #-P$ͷΨΠυϥΠϯ JOQVU4JOLɺPVUQVU4USFBNͰ࣮͢Δ ґଘΦϒδΣΫτ֎͔ΒೖՄೳͰɺϓϥοτ ϑΥʔϜʹґଘ͠ͳ͍ͷͰ͋Δ͜ͱ ϓϥοτϑΥʔϜͷذμϝ dΛकͬͯΕɺ࣮ͳΜͰ͍͍Α ͨͩ͠ɺ3FBDUJWF1SPHSBNNJOHͰΉͷ͕͓͢͢ΊͩΑ
Slide 15
Slide 15 text
© DMM.com #-P$ͱ6*ͷܨ͗
Slide 16
Slide 16 text
© DMM.com #-P$ͱ6*ͷܨ͗ &BDIDPNQMFYFOPVHIDPNQPOFOUIBTB DPSSFTQPOEJOH#-P$ $PNQPOFOUTTIPVMETFOEJOQVUTBTJTz $PNQPOFOUTTIPVMETIPXPVUQVUTBTDMPTFBT QPTTJCMFUPBTJTz "MMCSBODIJOHTIPVMECFCBTFEPOTJNQMF#-P$ CPPMFBOPVUQVUT
Slide 17
Slide 17 text
© DMM.com #-P$ͷΨΠυϥΠϯ ͦΕͧΕͷzेʹෳࡶͳzίϯϙʔωϯτʹ#-P$ ͕Ұͭ͋Δʢzेʹෳࡶͳzͷ߹͍֤ࣗͰஅʣ JOQVUʹૹΔσʔλBTJTͰ PVUQVUʹྲྀ͢ετϦʔϜͰ͖Δ͚ͩlBTJTzͰ ͯ͢ͷذ#-P$ʹΑΔ#PPMFBOͳΞτϓοτ ʹج͖ͮ͘Ͱ͋Δ
Slide 18
Slide 18 text
© DMM.com #-P$ͷྫ
Slide 19
Slide 19 text
© DMM.com #-P$ͷྫ class CartBLoC { Sink addition; Stream itemCount; Stream totalCost; Stream> items; }
Slide 20
Slide 20 text
© DMM.com #-P$ͷྫ class CartBLoC { Sink addition; Stream itemCount; Stream totalCost; Stream> items; } 1SPEVDU͕Ճ͞ΕΔͱ
Slide 21
Slide 21 text
© DMM.com #-P$ͷྫ class CartBLoC { Sink addition; Stream itemCount; Stream totalCost; Stream> items; } ͦΕͧΕͷ4USFBN͔Β݁Ռ͕ྲྀΕΔ
Slide 22
Slide 22 text
© DMM.com 'MVUUFSͰͷ͍ํ
Slide 23
Slide 23 text
© DMM.com JOQVUͷܨ͛ํ TextField( onChanged: bloc.sink.add, decoration: InputDecoration( border: OutlineInputBorder(), ɹɹɹ hintText: “hint"), )
Slide 24
Slide 24 text
© DMM.com JOQVUͷܨ͛ํ TextField( onChanged: bloc.sink.add, decoration: InputDecoration( border: OutlineInputBorder(), ɹɹɹ hintText: “hint"), ) ΠϕϯτͱTJOLBEEΛόΠϯυ͢Δ͚ͩ
Slide 25
Slide 25 text
© DMM.com PVUQVUΛ6*ʹͭͳ͛Δํ๏ StreamBuilder( stream: bloc.stream, builder: (context, snapshot) => Container( child: Text(snapshot?.data ?? ""), ), )
Slide 26
Slide 26 text
© DMM.com PVUQVUΛ6*ʹͭͳ͛Δํ๏ StreamBuilder( stream: bloc.stream, builder: (context, snapshot) => Container( child: Text(snapshot?.data ?? ""), ), ) 4USFBN#VJMEFS͏͚ͩ
Slide 27
Slide 27 text
© DMM.com ·ͱΊ
Slide 28
Slide 28 text
© DMM.com w #-P$6*ͱ.PEFMͱ*OGSBΛ͚Δ͜ͱͱɺΫϩε ϓϥοτϑΥʔϜͷίʔυγΣΞΛϞνϕʔγϣϯ ʹੜ·Εͨ w कΔ͖ΨΠυϥΠϯ͕͋Δ w 'MVUUFSͰ w JOQVUΛૹΔͱ͜ΖͰTJOLBEEΛόΠϯυ͢Δ w PVUQVUΛTVCTDSJCF͢Δʹ4USFBN#VJMEFSΛ͏ ·ͱΊ