Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
Transcript
43 slides
'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͕ߴ͍ͷॿ͔Δ ʢ͏গ͠୳ٻͯ͠ΈΔ͔ʣ
More Decks by Kei Ito
See All by Kei Ito
20211015 Mac CatalystでmacOS用アプリを作る
itok
2
4.6k
20201009 iOS 14 ウィジェットをつくってみた
itok
1
2.6k
20191206 Property Wrappers 入門
itok
0
1.8k
20190920 iOS 13 対応ではまった話
itok
1
2.6k
20190726 Background App Refresh Taskがやってきた
itok
0
2.4k
20190722 Firebase Remote Configでアドネットワークを管理する
itok
0
1.8k
20190419 iOSアプリで証明書の情報を参照する
itok
0
1.6k
20190412 Android TV向けアプリを作ってみる
itok
0
1.2k
20190215 iOS/Androidでドキュメントスキャナーを作ってみた
itok
0
1.9k
Other Decks in Programming
See All in Programming
地方こそサーバーレス — 10年続けた、顔が見えるチームで確かな基盤を / Serverless Matters Most in Regional Areas — 10 Years of Building Reliable Foundations with Close-Knit Teams
seike460
PRO
1
410
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
260
Crash Auto Pipelines
veronikapj
1
410
Secure Your Coding Agent Like It’s Malware (v1.5) 🇬🇧 @Code.talks 2026
richargh
0
140
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
620
はじめてのPLATEAU
nokonoko1203
1
640
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
300
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
330
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
Claude Code ハーネスDeep Dive – 君はどこまで制御する? -
takateeen_knj
6
5.6k
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
160
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
650
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
470
Crafting Experiences
bethany
1
440
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
How to Talk to Developers About Accessibility
jct
2
620
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Odyssey Design
rkendrick25
PRO
3
940
A Tale of Four Properties
chriscoyier
163
24k
Building Applications with DynamoDB
mza
96
7.3k
HDC tutorial
michielstock
2
1k
Claude Code のすすめ
schroneko
67
230k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k