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
20210219 Flutterに入門してみた
Search
Kei Ito
February 19, 2021
Programming
4.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20210219 Flutterに入門してみた
Kei Ito
February 19, 2021
More Decks by Kei Ito
See All by Kei Ito
20211015 Mac CatalystでmacOS用アプリを作る
itok
2
4.5k
20201009 iOS 14 ウィジェットをつくってみた
itok
1
2.5k
20191206 Property Wrappers 入門
itok
0
1.7k
20190920 iOS 13 対応ではまった話
itok
1
2.5k
20190726 Background App Refresh Taskがやってきた
itok
0
2.3k
20190722 Firebase Remote Configでアドネットワークを管理する
itok
0
1.6k
20190419 iOSアプリで証明書の情報を参照する
itok
0
1.5k
20190412 Android TV向けアプリを作ってみる
itok
0
1.1k
20190215 iOS/Androidでドキュメントスキャナーを作ってみた
itok
0
1.8k
Other Decks in Programming
See All in Programming
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.6k
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.3k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
6.1k
Oxlintのカスタムルールの現況
syumai
6
1.1k
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
230
Claspは野良GASの夢をみるか
takter00
0
190
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
540
JavaDoc 再入門
nagise
1
350
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
340
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
Chasing Engaging Ingredients in Design
codingconduct
0
220
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
150
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Claude Code のすすめ
schroneko
67
230k
A Soul's Torment
seathinner
6
2.9k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
280
Transcript
'MVUUFSʹ ೖͯ͠Έͨ .PCJMF"DU0/-*/& JUPL!ͦΒ͔ͥ
JUPL!ͦΒ͔ͥ w ͍ͱ͏͚͍ʢJUPLʣ w ɹɹɹɹɹɹͷதͷਓ w ϞόΠϧΞϓϦΤϯδχΞ݉$&0 w ෭ۀͰϑϦʔϥϯεత w
IUUQTJUPLKQ IUUQTTPSBLB[FDPKQ !JUPLKQ
ॴࡏɿژࢢதژ۠ ࣾһਓࣗ
࣮ डୗ ࣗࣾ
J04"OESPJENBD048JOEPXTαʔό ҰਓͰͬͯ·͢ʢσβΠϯҎ֎ʣ
ݴޠɾϓϥοτϑΥʔϜྺ w ʙɹ0CKFDUJWF$ w ʙɹJ04 w ʙɹ"OESPJE+BWB w ʙɹ4XJGU w
ʙɹ,PUMJO w ʙɹ'MVUUFSˡΠϚίίʢೖͯ͠िؒ΄Ͳ
'MVUUFSʹ ೖͯ͠Έͨ
'MVUUFSͱ w (PPHMFϞόΠϧΞϓϦϑϨʔϜϫʔΫʢʙ w J04"OESPJE8FCͷϚϧνϓϥοτϑΥʔϜ w ݴޠ%BSU w IUUQTqVUUFSEFW
ൺֱ 'MVUUFS 3FBDU/BUJWF 9BNBSJO ݴޠ %BSU +BWF4DSJQU $ "1* ಠࣗ
ಠࣗ ಠࣗ XSBQQFS 6* ಠࣗ ωΠςΟϒ ωΠςΟϒ ։ൃڥ "OESPJE4UVEJP 74$PEF ͳΜͰ 7JTVBM4UVEJP
ߏ
ϚϧνϓϥοτϑΥʔϜ 🤔
🤔 w ϚϧνϓϥοτϑΥʔϜͬͯେৎͳͷʁ w ֶशɾಋೖίετʁ w ϝϯςφϯεʁ w τʔλϧͰ݁ہίετ͕༨ܭʹ͔͔Δͱ͔ʁ
ͦΖͦΖࢼͯ͠ΈΔʁ 🤔
ͳͥ'MVUUFSʁ w ެ։͞Εͯܦͬͨ͠ɺ҆ఆͯ͠Δ͔ w ͳΜ͔·ΘΓͰྲྀߦ͍ͬͯΔؾ͕͢Δ w ษڧձωλͱͯ͠ࢼͯ͠ΈΔͷΑͦ͞͏ w ॳ৺ऀωλͱͯ͠ษڧձͰൃදͯ͠ɺ͍Ζ͍Ζͱ ڭ͑ͯΒ͑ͨΒ͍͍ͳͱ͍͏ελΠϧͰ
ͱΓ͋͑ͣ ΞϓϦ࡞ͬͯΈ·ͨ͠
ڥ w NBD04 w 'MVUUFS w %BSU w "OESPJE4UVEJP w
9DPEF
%JBOB
%JBOB w Ґஔใʹج݄ͮ͘ྸදࣔΞϓϦ w ӳ྆ରԠ w ͱͱJ044XJGU"OESPJE,PUMJOͰ࣮ w 'MVUUFSͰϑϧεΫϥον w
WϦϦʔεࡁΈ w IUUQTNPPOC[
ೖલޙͰ ؾʹͳͬͨͳͲΛ ྻڍ͍͖ͯ͠·͢
'MVUUFSͷجຊ
'MVUUFSͷجຊ w એݴܕͷ6* w 8JEHFUͷ֊ߏ w ϨΠΞτ8JEHFUͱͯ͠Έ্͍͛ͯ͘ Widget _buildMoon(...) {
return Container( child: AspectRatio( aspectRatio: 1, child: CustomPaint( painter: MoonPainter(...), ), ), ); }
8JEHFUT
։ൃɾσόοάڥ
։ൃɾσόοάڥ w ಋೖ؆୯ w 4%,ͷల։ઃஔ w "OESPJE4UVEJPͷϓϥάΠϯಋೖˠྃ👍 w )PUSFMPBE͋Γ w
"OESPJE4UVEJP͔ΒσόοάͰ͖Δ w J04"OESPJEͲͪΒ
$POUJOVPVT *OUFHSBUJPO
$POUJOVPVT*OUFHSBUJPO w ஶ໊Ͳ͜Ζ͍͍ͩͨରԠ w 'BTUMBOF w #JUSJTF w (JU)VCBDUJPOT
ϓϥοτϑΥʔϜ ґଘ෦
ϓϥοτϑΥʔϜґଘ෦ w ֤QBDLBHFͰରԠʢIUUQTQVCEFWʣ w ެࣜɾඇެࣜ͞·͟· w ओཁͳͷ͍͍ͩͨ͋Δ w ҐஔใɺΧϝϥɺࣸਅϥΠϒϥϦͳͲ
ྫʣҐஔใऔಘ import 'package:location/location.dart'; Future<LocationData> _getLocationData() async { Location location =
Location(); bool serviceEnabled = await location.serviceEnabled(); if (!serviceEnabled) { serviceEnabled = await location.requestService(); if (!serviceEnabled) { return null; } } PermissionStatus permissionGranted = await location.hasPermission(); if (permissionGranted == PermissionStatus.denied) { permissionGranted = await location.requestPermission(); if (permissionGranted != PermissionStatus.granted) { return null; } } return await location.getLocation(); }
σβΠϯ
σβΠϯ w جຊతʹ.BUFSJBMσβΠϯ w ϓϥοτϑΥʔϜؒͰڞ௨ w J04෩ͷ$VQFSUJOPXJEHFU܈͋Δ w ྆σβΠϯΛ࣮ߦ࣌ʹΓସ͑Δ QBDLBHF͋Δ
J04෩ 4XJUDI $VQFSUJOP4XJUDI 1MBUGPSN4XJUDI qVUUFS@QMBUGPSN@XJEHFUT
λϒϨοτ ʢBEBQUJWFʣ
λϒϨοτʢBEBQUJWFʣ w ը໘αΠζΛΈͯࣗલͰௐ͢Δඞཁ͋Γ LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) {
if (constraints.maxWidth < constraints.maxHeight) { return _portraitLayout(moonBox, dataTableBox); } else { return _landscapeLayout(moonBox, dataTableBox); } } )
μʔΫϞʔυ
μʔΫϞʔυ w 5IFNF5IFNF%BUBͰରԠ Widget build(BuildContext context) { return MaterialApp( theme:
ThemeData.light(), darkTheme: ThemeData.dark(), ...); }
ϩʔΧϥΠζ
ϩʔΧϥΠζ w J04"OESPJE྆ରԠՄೳ { "moon": "݄", "newMoon": "৽݄", ... Text(AppLocalizations.of(context).moon)
{ "moon": "Moon", "@moon": {}, "newMoon": "New", "@newMoon": {}, ...
ࠂ
ࠂ w "E.PCͳͲҰ෦ͷ4%,ʹ͍ͭͯQBDLBHF͋Γ
·ͱΊ
·ͱΊ w ؾʹͳΓϙΠϯτ w ωΠςΟϒ6*ײബ͍ʢಛʹJ04ʣˡٯʹ04ͷ มߋͰಈ͔ͳ͘ͳΔ͜ͱগͳͦ͏ʁ w 04ಠࣗʢ͋Δ͍֎෦4%,ʣͷ৽͍͠"1*Λ͢ ͙ʹ͑ΔΘ͚Ͱͳ͍
·ͱΊ w ͱ͍͑ w దࡐదॴͰ͋Δ͕։ൃͷબࢶͱͯ͠ेʹՄೳ ੑ͋Γ w J04"OESPJEͷ։ൃܦݧ͕͋Δͱͳ͓Αͦ͞͏ w ެࣜυΩϡϝϯτʢIUUQTqVUUFSEFWEPDTʣ͕ॆ
࣮͍ͯ͠Δ͔Β࠷ऴతʹͦ͜ΛݟΔ͠ w qVUUFSͷHPPHMFBCJMJUZ͕ߴ͍ͷॿ͔Δ ʢ͏গ͠୳ٻͯ͠ΈΔ͔ʣ