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
[ABCD2021Winter]Flutterアプリ開発実践
Search
Kenichi Kambara
December 11, 2021
Technology
280
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[ABCD2021Winter]Flutterアプリ開発実践
ABCD 2021 Winterの「Flutterアプリ開発実践」のセッション資料です。
#abcd2021w #androidjp #flutterjp
Kenichi Kambara
December 11, 2021
More Decks by Kenichi Kambara
See All by Kenichi Kambara
n個のアプリ開発系 Skills を 作り育てて気づいたこと
korodroid
0
1.3k
[爆速開発LT #2] Codex-Powered Mobile Apps Development - Deep Dive Edition -
korodroid
0
57
[DevFest Singapore] Getting Started with Mobile Development Using Generative AI
korodroid
0
68
[FlutterAlliance]Designing Borderless UX in Flutter: Insights from 50 Countries
korodroid
0
45
[Codex Meetup Japan #1] Codex-Powered Mobile Apps Development
korodroid
2
1.5k
[AgentConHelsinki2025]From Assistant to Agent: How Developer Agents Reshape Mobile Workflows
korodroid
0
37
[FlutterTokyo#10]In-App Language Switching in Flutter
korodroid
0
51
[potatotips #92]Integrating Quick Settings Tiles into Your Android App
korodroid
1
200
[ABC2025Spring]Code Less, Build More: A Practical Guide to Mobile Apps with Generative AI
korodroid
0
260
Other Decks in Technology
See All in Technology
『モデル + ハーネス』で読み解く AIエージェント入門
oracle4engineer
PRO
2
180
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
4
2.6k
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
1
280
[Droidcon Orlando '26] The Android Lens: Applying Mobile Forensics to AI Performance
amanda_hinchman
1
110
AI工学特論: MLOps・継続的評価
asei
7
1.6k
「休む」重要さ
smt7174
6
1.7k
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
370
どこまでAIに任せるか 〜確率論と決定論の境界決定〜
shukob
0
500
Power Automateアップデート情報
miyakemito
0
150
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
320
AI時代のPlaywright活用(システムテストを自動化する ー 実行エンジンにPla ywrightを選んだ理由)
ynisqa1988
2
990
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
2
290
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
How to Ace a Technical Interview
jacobian
281
24k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
410
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
The Limits of Empathy - UXLibs8
cassininazir
1
540
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Deep Space Network (abreviated)
tonyrice
0
230
Amusing Abliteration
ianozsvald
1
240
Transcript
2021.12.11 ਆݪ ݈Ұ (@korodroid) FlutterΞϓϦ։ൃ࣮ફ
About me •Mobile App Development •Speeches (e.g. 9 International confs.)
•Writings (e.g. 6 Dev Books) •[Of fi cial] Evangelist at NTT TechnoCross •[Private] iplatform.org ਆݪɹ݈Ұ (@korodroid)
About my product (Private works) Sekaiphone(Kotlin/Swift+Firebase) MyToDo(Flutter+Firebase)
•ԡ͓͖͍͑ͯͨ͞Tips •࣮ફςΫχοΫ Agenda
ԡ͓͖͍͑ͯͨ͞Tips
Tips 1. ϥΠϒςϯϓϨʔτͷ׆༻
Tips 1. ϥΠϒςϯϓϨʔτͷ׆༻ class MainPage extends StatelessWidget { @override Widget
build(BuildContext context) { return Container(); } } //Before: ΟδΣοτΛશͯखॻ͖ //After: stless/stful/stanim+[Tab]Ωʔ
ΑΓଟ͘ͷςϯϓϨʔτ Tips 1. ϥΠϒςϯϓϨʔτͷ׆༻
Tips 1. ϥΠϒςϯϓϨʔτͷ׆༻ සग़͢ΔίʔυɺࣗલςϯϓϨʔτԽ͓͢͢Ί
Tips 2. ίʔυΞγετػೳͷ׆༻
Widgetͷબ& ALT+ENTER Tips 2. ίʔυΞγετػೳͷ׆༻
Tips 3. FlutterGenͷ׆༻ ΞηοτɾϑΥϯτɾΧϥʔͷཧࢧԉ // Before class MainPage extends StatelessWidget
{ @override Widget build(BuildContext context) { return Image.asset("assets/images/chara1.png"); } } // After ref. FlutterGen: https://github.com/FlutterGen/ fl utter_gen
࣮ફςΫχοΫ
Android: Kotlin, iOS: Swift Android/iOS:Flutter എܠ. FlutterͷҠߦ
ૺ۰ͨ͠ͱରࡦ 1. ෳࡶͳUI 2. ঢ়ଶཧ 3. ϥϯλΠϜύʔϛογϣϯ
1. ෳࡶͳUI Ͳ͏࣮ͬͯݱ͢Δʁ •Step1. ը૾ͷՃ •Step2. ը૾ͷॏͶ߹Θͤ •Step3. Ґஔ߹Θͤ
Ϧιʔε … 100 images
Step1. ը૾ͷՃ(with FlutterGen) flutter: assets: - assets/images/imgKokkiLeftl.png # - assets/images/
pubspec.yaml
Step2. ը૾ͷॏͶ߹Θͤ (How?) ref. Stack: https://api. fl utter.dev/ fl utter/widgets/Stack-class.html
+ +
Widget _getKokkiImage() { return Stack( children: [ Assets.images.kokkiEn.image( height: 80.0,
), Assets.images.imgKokkiLeftl.image( height: 80.0, ), Assets.images.imgSpeak.image( height: 24, ), ], ); ref. Stack: https://api. fl utter.dev/ fl utter/widgets/Stack-class.html Step2. ը૾ͷॏͶ߹Θͤ
Step3. Ґஔ߹Θͤ //Before Widget _getKokkiImage() { return Stack( children: [
Assets.images.kokkiEn.image( height: 80.0, ), Assets.images.imgKokkiLeftl.image( height: 80.0, ), Assets.images.imgSpeak.image( height: 24, ), ], );
Step3. Ґஔ߹Θͤ (How?) ref. Positioned: https://api. fl utter.dev/ fl utter/widgets/Positioned-class.html
// After Widget _getKokkiImage() { return Stack( children: [ Assets.images.kokkiEn.image(
height: 80.0, ), Assets.images.imgKokkiLeftl.image( height: 80.0, ), Positioned( left: 4.0, top: 60.0, child: Assets.images.imgSpeak.image( height: 24, ), ), ), ], ); } Step3. ϨΠΞτˍҐஔ߹Θͤ
2. ঢ়ଶཧ ͚ͩ͜͜ߋ৽
2. ঢ়ଶཧ •StatefulWidget •Provider (InheritedWidget) •Riverpod •Bloc •GetX •…
ಛΛཧղͯࣗ͠ͷߟ͑Ͱબ͢Δ͜ͱ͕େ
2. ঢ়ଶཧ •StatefulWidget •Provider (InheritedWidget) •Riverpod •Bloc •GetX •…
ಛΛཧղͯࣗ͠ͷߟ͑Ͱબ͢Δ͜ͱ͕େ
ྫ. GetXΛ༻͍ͨঢ়ଶཧ ൺֱతγϯϓϧʹར༻Մೳ // Before Text(‘Χϯλʔ’), Text("$count"), // After
class MainController extends GetxController { var count = 0.obs; increment() => count++; } [View]main_view.dart [Controller]main_contoroller.dart // After final MainController c = Get.put(MainController()); Text(‘Χϯλʔ’), Obx(() => Text(“${c.count}”)),
GetXͷศརػೳ ͦͷଞʹଟ͘ͷศརػೳ Get.to(NextScreen()); Get.toNamed(‘/details'); Get.back(); ը໘ભҠ(ൈਮ) Get.snackbar('͓Βͤ', ‘৽ணΫʔϙϯ͕͋Γ·͢ɻ'); Get.defaultDialog(
title: "֬ೝ", content: Text("ࠓ͙͢ɺϢʔβొ͠·͔͢ʁ"), confirm: TextButton( child: Text("Ok"), onPressed: () => print("OK࣌ͷॲཧ"), )); ϢʔςΟϦςΟ(ൈਮ) ※↑Ҏ֎ʹ͞·͟·ͳػೳ͕ఏڙ͞Ε͍ͯ·͢ɻ
3. ϥϯλΠϜύʔϛογϣϯ
ंྠͷ࠶ൃ໌ͷલʹ https://pub.dev/
My choice: permission_handler ϥΠϒϥϦͷՃ ϥΠϒϥϦͷΠϯϙʔτ
ྫ. ϥϯλΠϜύʔϛογϣϯͷར༻ཁٻ // ϚΠΫػೳͷར༻ύʔϛογϣϯͷཁٻ var status = await Permission.microphone.request(); औಘͰ͖Δ݁Ռͷྫ
- Granted - Denied - PermanentlyDenied - Restricted
Conclusion •Tipsˍ࣮ફςΫχοΫΛ׆༻ͯ͠ޮతͳ։ൃΛʂ •ࣗͨͪͷϕλʔϓϥΫςΟεΛฤΈग़͢ͷ͕͓͢͢Ίʂ •FlutterͷੈքΓ্͍͖͛ͯ·͠ΐ͏🏃 ref.1 : Twitter @korodroid ref.2
: Speaker Deck https://speakerdeck.com/korodroid/
Please let me know if you have any requests
such as technical speeches, technical writings and so on. Facebook:http://fb.com/kanbara.kenichi Twitter:@korodroid LinkedIn:http://www.linkedin.com/in/korodroid Thank you so much