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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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.4k
20190722 Firebase Remote Configでアドネットワークを管理する
itok
0
1.7k
20190419 iOSアプリで証明書の情報を参照する
itok
0
1.6k
20190412 Android TV向けアプリを作ってみる
itok
0
1.1k
20190215 iOS/Androidでドキュメントスキャナーを作ってみた
itok
0
1.9k
Other Decks in Programming
See All in Programming
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
770
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
130
Foundry Localでエージェント開発
seosoft
0
160
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
190
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
140
MIZARU@SPAJAM2026 第二回予選
1901drama
0
110
App Intentsのビルドプロセスを支える技術
kntkymt
0
180
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
230
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
160
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
3
470
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
910
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.8k
The Limits of Empathy - UXLibs8
cassininazir
1
650
Producing Creativity
orderedlist
PRO
348
41k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
Abbi's Birthday
coloredviolet
3
9.9k
Speed Design
sergeychernyshev
33
2.1k
How to Talk to Developers About Accessibility
jct
2
540
The Art of Programming - Codeland 2020
erikaheidi
57
14k
GraphQLとの向き合い方2022年版
quramy
50
15k
A designer walks into a library…
pauljervisheath
211
25k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
560
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͕ߴ͍ͷॿ͔Δ ʢ͏গ͠୳ٻͯ͠ΈΔ͔ʣ