๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€

(154)
FutureBuilder connectionState๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค builder()๊ฐ€ ๊ณ„์† ์ƒˆ๋กœ ๋ถˆ๋ฆฐ๋‹ค builder() ์•ˆ์—์„œ setState๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ FutureBuilder๊ฐ€ ํ•ด์ฃผ๋Š” ๊ฑฐ๋‹ค ์œ„ ์˜ˆ์‹œ์—์„œ๋Š” snapshot๊ณผ ๊ด€๋ จ๋œ ์–ด๋–ค ๊ฒƒ์ด ๋ฐ”๋€Œ์–ด๋„ builder()๋Š” ๋‹ค์‹œ ๋ถˆ๋ฆฐ๋‹ค ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด setState() ๋˜๊ฒŒ ํ•ด๋ณด์•˜๋‹ค ์บ์‹ฑ(caching) build ๋‹ค์‹œ ์‹คํ–‰ํ–ˆ์ง€๋งŒ FutureBuilder๊ฐ€ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ ๊ฐ’ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์ด๋‹ค ์œ„ ์˜ˆ์‹œ์—์„œ๋Š” ๊ธฐ์กด ๋ฐ์ดํ„ฐ ๊ฐ’ ์œ ์ง€ํ•œ ์ƒํƒœ์—์„œ 3์ดˆ ๋’ค์— ๋ฐ์ดํ„ฐ ๊ฐ’ ๋ฐ”๋€๋‹ค if(!snapshot.hasData){ return Center( child: CircularProgressIndicator(), ); } ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์˜ˆ ์—†์„ ๋•Œ ๋กœ๋”ฉ๋ฐ” ๋Œ๋‹ค๊ฐ€ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ๋˜๋ฉด ๋ณด์—ฌ์ฃผ๊ธฐ -..
์ถœ์„์ฒดํฌ ์•ฑ https://mapsplatform.google.com/ Google Maps Platform - Location and Mapping Solutions Create real world and real time experiences for your customers with dynamic maps, routes & places APIs from Google Maps Platform’s location solutions. mapsplatform.google.com ๊ตฌ๊ธ€์ง€๋„ ํ”Œ๋žซํผ ๊ฐ€์„œ ๊ฒฐ์ œ๋“ฑ๋ก ํ•ด์ค€๋‹ค(์œ ๋ฃŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฒญ๊ตฌ ๋˜์ง€ ์•Š๋Š”๋‹ค) API Key ๊ฐ€์ ธ์™€์„œ ์•ˆ๋“œ๋กœ์ด๋“œ, iOS ๊ฐ๊ฐ ์„ค์ •ํ•ด์ค€๋‹ค ์‚ฌ์šฉ ํ”Œ๋Ÿฌํ„ฐ ํŒจํ‚ค์ง€: geolocator: ^9.0.2, google_maps: ^6.3.0 LatLng ..
๋น„๋””์˜ค ํ”Œ๋ ˆ์ด์–ด ์•ฑ #3(Slider, ์ƒˆ๋กœ์šด ๋™์˜์ƒ ๋ถˆ๋Ÿฌ์™€ ์žฌ์ƒ) Slider ์œ„์ ฏ ์‚ฌ์šฉํ•ด ๋™์˜์ƒ์˜ ํ˜„์žฌ ์žฌ์ƒ ์œ„์น˜์™€ ์—ฐ๋™ ์‹œํ‚ค๊ธฐ 1. slider ์œ„์ ฏ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กคํ•˜๋ฉด ๋™์˜์ƒ์ด ํ•ด๋‹น ์œ„์น˜๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค 2. ๋™์˜์ƒ์ด ์‹คํ–‰๋˜๋Š” ์œ„์น˜์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ slider๊ฐ€ ์›€์ง์—ฌ์•ผ ํ•œ๋‹ค Slider "${crntPosition.inMinutes}: ${(crntPosition.inSeconds % 60).toString().padLeft(2, "0")}", // 60์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ์ฝ”๋”ฉ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด 61์ดˆ ๋์„ ๋•Œ ๋ถ„์€ 1๋ถ„์ด ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ ์ดˆ๋Š” ์—ฌ์ „ํžˆ 61์ผ ๊ฒƒ // -> ๋ถ„ ์ด ๋œ ๋ถ€๋ถ„์€ ๋ถ„์œผ๋กœ ๋„˜๊ธฐ๊ณ  ์ดˆ๋งŒ ๋‚จ๊ฒจ์ค˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ 0:01 ์ด ๋ถ€๋ถ„! Expanded( child: Slider( value: crntPosition.inSeconds.toDouble(), max..
๋น„๋””์˜ค ํ”Œ๋ ˆ์ด์–ด ์•ฑ #2(๋™์˜์ƒ ์‚ฌ์ด์ฆˆ ์กฐ์ ˆ, ๋’ค๋กœ๊ฐ€๊ธฐ, ์žฌ์ƒ, ์•ž์œผ๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ ๊ตฌํ˜„) ๋™์˜์ƒ ์‹ค์ œ ์‚ฌ์ด์ฆˆ๋กœ ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ AspectRatio child ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ž…๋ ฅ๋˜๋Š” ์œ„์ ฏ์˜ ๋น„์œจ ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์ ฏ์ด๋‹ค aspectRatio ๋งค๊ฐœ๋ณ€์ˆ˜์— ์›ํ•˜๋Š” ๋น„์œจ ์ž…๋ ฅ ๊ฐ€๋Šฅํ•˜๋‹ค -> 16:9๋ผ๋ฉด 16/9 ์ž…๋ ฅํ•œ๋‹ค ์œ„ ์˜ˆ์‹œ์—์„œ๋Š” value.aspectRatio ๊ฒŒํ„ฐ๋กœ ๋ฐ›์•„์™€ ์›๋™์˜์ƒ ๋น„์œจ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค ์žฌ์ƒ, ๋’ค๋กœ๊ฐ€๊ธฐ, ์•ž์œผ๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ ๋ฒ„ํŠผ ์Šคํƒ€์ผ์€ renderIconBtn ์œ„์ ฏ์œผ๋กœ ์ •์˜ํ•ด์คฌ๊ณ  renderIconBtn์˜ onPressed ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ฐ๊ฐ ์žฌ์ƒ, ๋’ค๋กœ๊ฐ€๊ธฐ, ์•ž์œผ๋กœ๊ฐ€๊ธฐ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์คฌ๋‹ค ๊ฐ ํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜ํ•œ๋‹ค ์žฌ์ƒ, ๋’ค๋กœ๊ฐ€๊ธฐ, ์•ž์œผ๋กœ๊ฐ€๊ธฐ ํ•จ์ˆ˜ ์ •์˜ ์žฌ์ƒ(onPlayPressed) ํ•จ์ˆ˜ setState(() { //์ด๋ฏธ ์‹คํ–‰ ์ค‘์ด๋ฉด ์ค‘์ง€, ์•„๋‹ˆ๋ฉด ์‹คํ–‰ if (videoC..
๋น„๋””์˜ค ํ”Œ๋ ˆ์ด์–ด ์•ฑ #1(๋ ˆ์ด์•„์›ƒ, ์‚ฌ์ง„์ฒฉ์ ‘๊ทผ๊ถŒํ•œ, ๋™์˜์ƒ ์žฌ์ƒ) ๋กœ๊ณ ์™€ ์•ฑ์ด๋ฆ„ ๋„ฃ์–ด์ฃผ๊ธฐ ์ฟ„์ฟ„,, ๊ธฐ์—ฝ์ง€ ์•Š๋‚˜์šฉ ~ SizedBox( height: 30.0, ), ๋กœ๊ณ  ์ด๋ฏธ์ง€์™€ ์•ฑ์ด๋ฆ„ ์‚ฌ์ด ๊ณต๋ฐฑ์€ ๋ณดํ†ต SizedBox๋กœ ํ•ด์ค€๋‹ค๊ณ  ํ•œ๋‹ค ๋กœ๊ณ ์™€ ์•ฑ์ด๋ฆ„์€ ๋”ฐ๋กœ stless ์œ„์ ฏ์œผ๋กœ ์ •์˜ํ•ด์ฃผ์—ˆ๋‹ค style: textStyle.copyWith(fontWeight: FontWeight.w700), textStyle.copyWith()๋ฅผ ์ด์šฉํ•ด ๊ฐ™์€ ์Šคํƒ€์ผ์ด์ง€๋งŒ ()์•ˆ์— ์ง€์ •ํ•œ ์˜ต์…˜๋งŒ ์‚ด์ง ๋‹ค๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค BoxDecoration ๊ธฐ๋Šฅ ์‹ ๊ธฐํ•˜๋‹ค! gredient์— ์—ฌ๋Ÿฌ ๊ทธ๋ž˜๋””์–ธํŠธ ์˜ต์…˜๋“ค์ด ์žˆ์–ด์„œ ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” LinearGradient๋ฅผ ์ง€์ •ํ–ˆ๋‹ค ์‹œ์ž‘๊ณผ ๋ ์ •๋ ฌ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ์ƒ‰์ƒ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค renderEmpty() ์œ„์ ฏ์œผ๋กœ ๊ฐ์‹ธ์ค€๋‹ค ๋กœ๊ณ ๋ฅผ ๋ˆ„๋ฅด๋ฉด onLogoTap..
pub get failed : A package may not list itself as a dependency pub get failed : A package may not list itself as a dependency ๋ณดํ†ต ๊ฐ™์œผ๋ฉด dependencies์— ์“ฐ๊ณ  pub get ํ•ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ ์™œ ์•ˆ๋ผ ........ํ–ˆ๋Š”๋ฐ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„(video_player)๊ณผ dependencies์— ์“ด ์ด๋ฆ„์ด ๊ฐ™์•„์„œ ์•ˆ๋˜๋Š” ๊ฑฐ์˜€๋‹ค ^ใ…‡^., https://stackoverflow.com/questions/71871096/pub-get-failed-a-package-may-not-list-itself-as-a-dependency pub get failed : A package may not list itself as a dependency I'm having this problem in pubspec.yaml : here t..
pop ๋ฉ”์†Œ๋“œ - maybePop, canPop, WillPopScope maybePop ๋ผ์šฐํŠธ ์Šคํƒ์— ํ•ด๋‹น ํŽ˜์ด์ง€๋ฐ–์— ์—†์„ ๊ฒฝ์šฐ pop๋˜์ง€ ์•Š๋Š”๋‹ค ๋ผ์šฐํŠธ ์Šคํƒ์— ๋˜๋Œ์•„ ๊ฐˆ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ pop์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค ํ™”๋ฉด์— ์•„๋ฌด ๊ฒƒ๋„ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ pop()ํ•ด์„œ ์•ฑ์„ ๋๋‚ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค canPop print()ํ•˜๋ฉด ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค false๋Š” ๋˜๋Œ์•„ ๊ฐˆ ํŽ˜์ด์ง€๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค WillPopScope ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์œผ๋กœ ์•ฑ ๋‚˜๊ฐ€๋Š” ๊ฒƒ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜ (ios๋Š” ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์œผ๋กœ ์ข…๋ฃŒ๋˜๋Š” ๊ธฐ๋Šฅ์ด ์—†๋‹ค) return false ํ•˜๋ฉด ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ถˆ๊ฐ€, trueํ•˜๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค ์•„๋ž˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ํŠน์ • ์ž‘์—…์„ ์ถ”๊ฐ€ํ•ด์„œ ๊ทธ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ pop() ๊ฐ€๋Šฅํ•˜๋„๋ก(๋’ค๋กœ ๊ฐ€๊ธฐ๋กœ ์•ฑ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก) ํ•  ์ˆ˜ ์žˆ๋‹ค final canPop ..
push ๋ฉ”์†Œ๋“œ - pushReplacement, pushReplacementNamed, pushAndRemoveUntil, pushNamedAndRemoveUntil pushReplacement() ๊ทธ ๋‹ค์Œ ํŽ˜์ด์ง€(RouteThree Screen)๋กœ ์ด๋™์€ ํ•˜์ง€๋งŒ ๊ทธ ํŽ˜์ด์ง€(RouteTwo Screen)์—์„œ pop()์„ ํ–ˆ์„ ๋•Œ pushReplacement()ํ–ˆ๋˜ ํŽ˜์ด์ง€(RouteTwo Screen)๋ฅผ ์ง€์šฐ๊ณ  ๊ทธ ์ „ ํŽ˜์ด์ง€๋กœ ๊ฐ„๋‹ค(RouteOne Screen) RouteTwo push replacement (RouteTwo ์ง€์šฐ๊ณ )-> RouteThree pop() -> RouteOne pushReplacementNamed pushReplacementNamed()๋„ pushReplacement()์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋™์ž‘ํ•œ๋‹ค RouteTwo push replacement (RouteTwo ์ง€์šฐ๊ณ )-> RouteThree pop() -> RouteOne ํ•˜์ง€๋งŒ pushRepl..

Tiny Star