'MVUUFSʹೖͯ͠Έͨ.PCJMF"DU0/-*/&JUPL!ͦΒ͔ͥ
View Slide
JUPL!ͦΒ͔ͥw ͍ͱ͏͚͍ʢJUPLʣw ɹɹɹɹɹɹͷதͷਓw ϞόΠϧΞϓϦΤϯδχΞ݉$&0w ෭ۀͰϑϦʔϥϯεతw IUUQTJUPLKQ IUUQTTPSBLB[FDPKQ !JUPLKQ
ॴࡏɿژࢢதژ۠ࣾһਓࣗ
࣮डୗࣗࣾ
J04"OESPJENBD048JOEPXTαʔόҰਓͰͬͯ·͢ʢσβΠϯҎ֎ʣ
ݴޠɾϓϥοτϑΥʔϜྺw ʙɹ0CKFDUJWF$w ʙɹJ04w ʙɹ"OESPJE+BWBw ʙɹ4XJGUw ʙɹ,PUMJOw ʙɹ'MVUUFSˡΠϚίίʢೖͯ͠िؒ΄Ͳ
'MVUUFSʹೖͯ͠Έͨ
'MVUUFSͱw (PPHMFϞόΠϧΞϓϦϑϨʔϜϫʔΫʢʙw J04"OESPJE8FCͷϚϧνϓϥοτϑΥʔϜw ݴޠ%BSUw IUUQTqVUUFSEFW
ൺֱ'MVUUFS 3FBDU/BUJWF 9BNBSJOݴޠ %BSU +BWF4DSJQU $"1* ಠࣗ ಠࣗಠࣗXSBQQFS6* ಠࣗ ωΠςΟϒ ωΠςΟϒ։ൃڥ"OESPJE4UVEJP74$PEFͳΜͰ 7JTVBM4UVEJP
ߏ
ϚϧνϓϥοτϑΥʔϜ🤔
🤔w ϚϧνϓϥοτϑΥʔϜͬͯେৎͳͷʁw ֶशɾಋೖίετʁw ϝϯςφϯεʁw τʔλϧͰ݁ہίετ͕༨ܭʹ͔͔Δͱ͔ʁ
ͦΖͦΖࢼͯ͠ΈΔʁ🤔
ͳͥ'MVUUFSʁw ެ։͞Εͯܦͬͨ͠ɺ҆ఆͯ͠Δ͔w ͳΜ͔·ΘΓͰྲྀߦ͍ͬͯΔؾ͕͢Δw ษڧձωλͱͯ͠ࢼͯ͠ΈΔͷΑͦ͞͏w ॳ৺ऀωλͱͯ͠ษڧձͰൃදͯ͠ɺ͍Ζ͍Ζͱڭ͑ͯΒ͑ͨΒ͍͍ͳͱ͍͏ελΠϧͰ
ͱΓ͋͑ͣΞϓϦ࡞ͬͯΈ·ͨ͠
ڥw NBD04w 'MVUUFSw %BSUw "OESPJE4UVEJPw 9DPEF
%JBOB
%JBOBw Ґஔใʹج݄ͮ͘ྸදࣔΞϓϦ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*OUFHSBUJPOw ஶ໊Ͳ͜Ζ͍͍ͩͨରԠw 'BTUMBOFw #JUSJTFw (JU)VCBDUJPOT
ϓϥοτϑΥʔϜґଘ෦
ϓϥοτϑΥʔϜґଘ෦w ֤QBDLBHFͰରԠʢIUUQTQVCEFWʣw ެࣜɾඇެࣜ͞·͟·w ओཁͳͷ͍͍ͩͨ͋Δw ҐஔใɺΧϝϥɺࣸਅϥΠϒϥϦͳͲ
ྫʣҐஔใऔಘimport 'package:location/location.dart';Future _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 $VQFSUJOP4XJUDI1MBUGPSN4XJUDI[email protected]@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͕ߴ͍ͷॿ͔Δʢ͏গ͠୳ٻͯ͠ΈΔ͔ʣ