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
PORT Firebase x Flutter
Search
shogo.yamada
June 26, 2019
0
400
PORT Firebase x Flutter
shogo.yamada
June 26, 2019
Tweet
Share
More Decks by shogo.yamada
See All by shogo.yamada
Jetpack ComposeへのリファクタリングのTIPS: CustomViewの便利な使い方 / Refactoring TIPS to Jetpack Compose: Useful usage of CustomView
yshogo
0
820
Android StudioのLiveTemplateの便利な使い方 / Android LiveTemplate Method
yshogo
0
1.2k
ZOZOの新規サービス 「FAANS」の開発 Android編/FAAN App Create on Android
yshogo
0
1.4k
PORT_Firebase___Algolia.pdf
yshogo
0
230
Flutter_meetup_tokyo__10.pdf
yshogo
0
5.9k
ZOZOTech meetup Frontend #10
yshogo
2
1.7k
flutter-meetup.pdf
yshogo
0
61
Potetochips #61
yshogo
1
510
Firebase ML Kitを使った デモアプリ活用事例 @Google App DOJO
yshogo
1
180
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
590
The Pragmatic Product Professional
lauravandoore
33
6.6k
Writing Fast Ruby
sferik
628
61k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Facilitating Awesome Meetings
lara
54
6.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
Music & Morning Musume
bryan
47
6.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
33k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Code Review Best Practice
trishagee
67
18k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
410
Transcript
FlutterͰ͏ Cloud Firestore PORT Firebase × Flutter shoo.yamada
ࣗݾհ Name: shoo.yamada Twitter: @yshogo87 Github: @yshogo ॴଐ:גࣜձࣾZOZOςΫϊϩδʔζ AndroidΤϯδχΞ
࣍ • աڈʹFirebaseͱFlutterΛͬͯ࡞ͬͨϓϩμΫτ • FlutterFirestoreΛ͑Δͷ͔ • FirestoreͱFlutterͷ૬ੑʹ͍ͭͯ • ։ൃεϐʔυʹ͍ͭͯ •
ࠓޙͷFirestoreͱFlutterͷಈ͖ʹ͍ͭͯ • ·ͱΊ
աڈʹFirebaseͱFlutterΛͬͨ ϓϩμΫτ
աڈʹFirebaseͱFlutterΛͬͨ ϓϩμΫτ • FirebaseRealtimeDatabase͔͠ͳ͔ͬͨ࣌ ͔Β৮͍ͬͯͨ • ͦͷࠒ͔ΒFirebaseͷັྗʹࠍΕࠐΈ͕ࣗݸ ਓͰ࡞ΔϓϩμΫτશͯFirebaseΛ͍ͬͯΔ • ॳظͷ͜Ζ
@1amageek ͞ΜͷQiitaΛԿճ ಡΜͰ͍ͨ
աڈʹFirebaseͱFlutterΛͬͨ ϓϩμΫτ
աڈʹFirebaseͱFlutterΛͬͨ ϓϩμΫτ • ͦͷޙFlutterʹग़ձ͏ • ΫϩεϓϥοτϑΥʔϜɺHotReloadɺඒ͍͠UIΛ ͬͨ։ൃख๏ΛֶͿ Flutter×Firebaseͬͯ࠷ڧͳΜ ͡ΌͶʁ
աڈʹFirebaseͱFlutterΛͬͨ ϓϩμΫτ • νϟοτΞϓϦΛ࡞Δ(ݱࡏαʔϏεऴྃ)
աڈʹFirebaseͱFlutterΛͬͨ ϓϩμΫτ
աڈʹFirebaseͱFlutterΛͬͨ ϓϩμΫτ • ຊ୳͠ΞϓϦέʔγϣϯ(ݱࡏϝϯςͯ͠ͳ͍)
ݱࡏSNSαʔϏε ։ൃத
FlutterʹFirebase͑Δͷ͔
FlutterʹFirebase͑Δͷ͔ →ී௨ʹ͑Δ
FlutterʹFirebase͑Δͷ͔
FlutterʹFirebase͑Δͷ͔ FirestoreͷincrementରԠ
FlutterʹFirebase͑Δͷ͔ ͍৺΄΅Web൛Firebase Future<void> postMessage(String groupId, String uid, String message, int
type) async { return await Firestore.instance .collection("group") .document(groupId) .collection("message") .add({ "uid": uid, "message": message, "type": type, "created_at": FieldValue.serverTimestamp(), }); }
FirestoreͱFlutterͷ૬ੑʹ͍ͭͯ
FirestoreͱFlutterͷ૬ੑʹ͍ͭͯ • ωΠςΟϒͱಉ͡Α͏ʹ͑Δ • Flutter͔ͩΒ͑ͳ͍ɺΈ͍ͨͳجຊత ʹͳ͠ • ιʔείʔυΛಡΉͱɺωΠςΟϒ(Ob-Cɺ JavaͰॻ͔Εͨίʔυ)ΛಡΜͰ͍Δ͚ͩ
FirestoreͱFlutterͷ૬ੑʹ͍ͭͯ
FirestoreͱFlutterͷ૬ੑʹ͍ͭͯ child: StreamBuilder( stream: chatHelper .getMessages(widget.groupId) .asBroadcastStream(), builder: (context, snapshot)
{ if (snapshot == null || snapshot.data == null) return Container(); return new ListView.builder( padding: new EdgeInsets.all(8.0), reverse: true, itemBuilder: (_, int index) { // ͜͜ͰϝοηʔδΛදࣔ͢Δ }, itemCount: snapshot.data.documents.length, ); })
։ൃεϐʔυʹ͍ͭͯ
։ൃεϐʔυʹ͍ͭͯ • Flutter͕͍ (HotReloadɺWidgetΧλϩά etc…..) • FirebaseΛ͑ɺαʔόʔαΠυϝϯς ͳ͠ • Firebase
× Flutter = ͍ ← ͨΓલ
։ൃεϐʔυʹ͍ͭͯ • ݸਓΞϓϦͷ։ൃظ͍͍ؒͩͨ̏ϲ݄ • ̍ͷ࡞ۀ࣌ؒ̍ʙ̎࣌ؒఔ • ࣮ࡍʹ͍ͬͯͯͬͺ͍
։ൃεϐʔυʹ͍ͭͯ • ͍ͬͯͬͯɺʮFirestoreͷ͕ࣝඞཁʯɺ ʮFlutterͷ͕ࣝඞཁʯ etc… • ͦΕͧΕʹผͷ͕ࣝඞཁ • ͨͩɺFlutter͔ΒFirebaseී௨ʹ͑· ͢ɻ
ࠓޙͷಈ͖
ࠓޙͷಈ͖ • Firestoreʹ৽ػೳ͕࣮͞ΕΔͱ͙͢Flutter ଆʹissueཱ͕ͬͯରԠ͠͡ΊΔ • ࣌ؒࠩ͋Δ͕ɺ͜Ε͔Β͙͢ʹରԠͯ͠ ͘ΕΔͣ
ࠓޙͷಈ͖ • Ͱݱঢ়FlutterͱFirestoreΛϑϧʹͬͯ ྲྀߦΔαʔϏεͷ࣮Λશવݟͳ͍(ࢁాͷ؍ ଌൣғ) • ࣮Λ࡞Γ݉ͶͯࣗϓϩμΫτ։ൃΛ ͍ͯ͠Δ
ࠓޙͷಈ͖ • ໘ɺshogo.yamada͕࡞ΔαʔϏεશͯ ʮFlutter×FirebaseʯͰ͍͘ͱࢥ͏ • Γ͍ͨ͜ͱɺΘ͔Βͳ͍͜ͱ͕͋Ε͍ͭ Ͱ࿈བྷ͍ͩ͘͞ɻ • Twitter: @yshogo87
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ࠙ձͰ͓͠͠·͠ΐ͏ʂ