๐Ÿฆ Flutter

ยท๐Ÿฆ Flutter
๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.
ยท๐Ÿฆ Flutter
๋ฌธ์ œ ์ƒํ™ฉ ํ”Œ๋Ÿฌํ„ฐ ์›น์„ ๊ตฌํ˜„ํ•˜๋˜ ๋„์ค‘ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๊ฐ€ ๋„ˆ๋ฌด ๋ฌด๊ฑฐ์› ๋‹ค. iOS์˜ ๊ฒฝ์šฐ animation์„ ์ค„ ๋•Œ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๊ณ„์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์„œ ์•„์ด๋””์–ด๋ฅผ ์–ป์–ด isolated ๋ฅผ ์จ์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์ž‘์—…์„ ๋Œ๋ฆฌ๋ ค๊ณ  ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋Š” ์˜์›ํžˆ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์•˜๊ณ  ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ๋‹ค์‹œ ์‹คํ–‰์‹œ์ผœ๋ณด๋‹ˆ...  ํ”Œ๋Ÿฌํ„ฐ ์›น์€ isolated๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค....;;;; ์•„๋ฌด๋ฆฌ ๋ชจ๋ฐ”์ผ๋ณด๋‹ค๋Š” ๋œ ์‚ฌ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌํ„ฐ ์›น์ด์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ฑฐ์˜ ํ•„์ˆ˜์ ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์•ˆ๋œ๋‹ค๋Š”๊ฒŒ ๋„ˆ๋ฌด ์ด์ƒํ•ด์„œ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด์•˜๋‹ค. ๋‹คํ–‰ํžˆ isolate๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. Flutter Web์—์„œ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑํ•˜๊ธฐ Flutter ์›น์—์„œ Isolat..
ยท๐Ÿฆ Flutter
๋ฌธ์ œ ์ƒํ™ฉ๋ถ„๋ช… ์•„๋ฌด๋Ÿฐ ํŒจ๋”ฉ๊ฐ’๋„ ์ฃผ์ง€์•Š๊ณ  ํƒญ๋ฐ”์™€ ๋ฆฌ์ŠคํŠธ๋ทฐ๋ฅผ Column์œผ๋กœ ์ˆ˜์ง๋ฐฐ์น˜ํ–ˆ๋Š”๋ฐ ๋ฆฌ์ŠคํŠธ๋ทฐ๋Š” ์œ„์™€๊ฐ™์ด ์ •์ƒ์ ์œผ๋กœ ๋‚˜์™”์ง€๋งŒ ํƒญ๋ฐ”๋ถ€๋ถ„์ด ์ด์ƒํ•˜๊ฒŒ ์™ผ์ชฝ ๊ฐ„๊ฒฉ์ด ๋“ค์–ด๊ฐ€์žˆ์—ˆ๋‹ค.    ๋ฌธ์ œ ํ•ด๊ฒฐisScrollable ์†์„ฑ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.  isScrollable๊ฐ€ true๋กœ ์„ค์ •๋˜๋ฉด, ๊ฐ ํƒญ์€ ์ž์‹ ์˜ ๋‚ด์šฉ์— ๋งž์ถฐ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "Home"์ด๋ผ๋Š” ํ…์ŠคํŠธ๊ฐ€ ์žˆ๋Š” ํƒญ์€ "Settings"๋ผ๋Š” ํ…์ŠคํŠธ๊ฐ€ ์žˆ๋Š” ํƒญ๋ณด๋‹ค ๋” ์ข์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ •ํ•ด์ง„ ํ™”๋ฉด ๋„ˆ๋น„ ๋Œ€๋น„ ๊ณ„์‚ฐ์ด ์•„๋‹Œ ์ฃผ์–ด์ง„ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋„ˆ๋น„๋ฅผ ์ •ํ•จ์œผ๋กœ์จ ํƒญ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์„œ ํ™”๋ฉด์— ๋ชจ๋‘ ํ‘œ์‹œ๋  ์ˆ˜ ์—†์„ ๋•Œ, ์‚ฌ์šฉ์ž๋Š” ์ˆ˜ํ‰ ์Šคํฌ๋กค์„ ํ†ตํ•ด ๋‚˜๋จธ์ง€ ํƒญ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ํƒญ์ด ์ž์‹ ์˜ ๋‚ด์šฉ์— ๋งž๊ฒŒ ๋ฐฐ์น˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํฌ๋กค์ด ๊ฐ€๋Šฅํ•ด์ง€๋Š” ๊ฒƒ์ด๋‹ค. is..
ยท๐Ÿฆ Flutter
๋ฌธ์ œ์ƒํ™ฉํŒŒ์ด์–ด์Šคํ† ์–ด ๋ชจ๋ธ๊ณผ ํ”„๋ก ํŠธ ๋ชจ๋ธ์ด ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ†ตํ•ฉํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.๋ถ„๋ช… yaml ํŒŒ์ผ์— ํ†ตํ•ฉํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€๋ฅผ ์ž„ํฌํŠธํ–ˆ์Œ์—๋„ ์œ„์™€๊ฐ™์ด ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.๋ฌธ์ œ ํ•ด๊ฒฐํŒŒ์ผ๊ฒฝ๋กœ ๋ฌธ์ œ์˜€๋‹ค. ํ”Œ๋Ÿฌํ„ฐ ํ†ตํ•ฉํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€๋Š” ์ •ํ•ด์ง„ ํŒŒ์ผ๊ฒฝ๋กœ์™€ ํŒŒ์ผ์ด๋ฆ„์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.๋‚˜๋Š” Testํด๋”์•ˆ์—์„œ ํ†ตํ•ฉํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์‹คํ–‰ํ–ˆ๋”๋‹ˆ ์œ„์™€๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋–ด์—ˆ๋‹ค.integration_test ํดํ„ฐ๋ฅผ ๋ฃจํŠธ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์ด๊ณณ์—์„œ ํ†ตํ•ฉํ…Œ์ŠคํŠธ ๋‹คํŠธํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค˜์•ผ ์—๋Ÿฌ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค.๋งŒ์•ฝ Test ํด๋” ์•ˆ์—์„œ ํ†ตํ•ฉํ…Œ์ŠคํŠธ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด ์‹คํ–‰์‹œํ‚ฌ ๊ฒฝ์šฐ flutter drive --driver ์ปค๋งจ๋“œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด์„œ ํ†ตํ•ฉํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰์‹œ์ผœ์•ผํ•œ๋‹ค.
ยท๐Ÿฆ Flutter
๋„ค๋น„๊ฒŒ์ด์…˜ ํƒญ๋ฐ”๋ฅผ Stateful ์œ„์ ฏ์œผ๋กœ ๋งŒ๋“ค์–ด ํƒญํ• ์‹œ ํŒŒ๋ž€์ƒ‰ ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์—ˆ์œผ๋‚˜๊ฐ€๊ธ‰์  Stateless ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ ํ™” ์‹œํ‚ค๊ณ  ์‹ถ์—ˆ๋‹ค.Statless ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ด๋ฏธ์ง€์˜ ์ƒ‰์„ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.๋ฐฐ๊ฒฝ ์ง€์‹์ฐธ๊ณ ๋งํฌ: https://api.flutter.dev/flutter/dart-ui/BlendMode.html Flutter์˜ UI๋ Œ๋”๋ง ๊ณผ์ • ์ดํ•ดํ•˜๊ธฐ Flutter์˜ UI๋ Œ๋”๋ง ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์œ„์ ฏ ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.์œ„์ ฏ ํŠธ๋ฆฌ๊ฐ€ ๋นŒ๋“œ๋œ ํ›„, Flutter๋Š” ์ƒํƒœ์™€ ์œ„์ ฏํŠธ๋ฆฌ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Element Tree, ๊ทธ๋ฆฌ๊ณ  ์œ„์ ฏ์˜ ์œ„์น˜์™€ ํฌ๊ธฐ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Render Tree๋ฅผ ๋งŒ๋“ ๋‹ค.์ƒ์œ„์œ„์ ฏ๋ถ€ํ„ฐ ํ•˜์œ„์œ„์ ฏ๊นŒ์ง€ ์ œ์•ฝ์กฐ๊ฑด์ด ์žกํžˆ๊ณ ,..
ยท๐Ÿฆ Flutter
https://medium.com/flutter/whats-new-in-flutter-3-24-6c040f87d1e4 What’s new in Flutter 3.24Unleashing Flutter GPU, Multi-View Embedding, and Moremedium.com ์–ด์ ฏ๋ฐค ํ”Œ๋Ÿฌํ„ฐ 3.24 ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ฃผ์š” ์—…๋ฐ์ดํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. UI1. SliverFloating Header ๊ธฐ๋Šฅ ์ถ”๊ฐ€2. PinnedHeaderSliver ๊ธฐ๋Šฅ ์ถ”๊ฐ€3. SliverResizingHeader ๊ธฐ๋Šฅ ์ถ”๊ฐ€4. Two diementional ScrollView ๊ธฐ๋Šฅ ์ถ”๊ฐ€5. TreeView ๊ธฐ๋Šฅ ์ถ”๊ฐ€6. CaraouselView ๊ธฐ๋Šฅ ์ถ”๊ฐ€7. ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ƒํƒœ๊ฐ€ enum์œผ๋กœ ์„ ์–ธ! ์ด๋ฅผ ํ†ตํ•ด ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ƒ..
ยท๐Ÿฆ Flutter
๋งŽ์€ ํ”Œ๋Ÿฌํ„ฐ ํ”„๋กœ์ ํŠธ๋“ค์ด ๋ชจ๋ธ ์„ ์–ธ์„ ํ•  ๋•Œ Freezed ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์™œ ๋‹ค๋“ค Freezed ๋ฅผ ์‚ฌ์šฉํ• ๋Š” ๊ฑธ๊นŒ? ๊ผญ ํŒจํ‚ค์ง€๋ฅผ ์จ์•ผํ•˜๋Š”๊ฑธ๊นŒ? ๋“ฑ๋“ฑ ๋ช‡๊ฐ€์ง€ ์˜๋ฌธ์ ์ด ๋“ค๊ฒŒ๋˜์—ˆ๊ณ  ๊ณต๋ถ€ํ•œ ๊ธฐ๋ก์„ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ๋กœ ๋‚จ๊ฒจ๋ณด๋ คํ•œ๋‹ค. ๋จผ์ € ๋ชจ๋ธ ์„ ์–ธ์— ์žˆ์–ด์„œ ์ „์ œ์กฐ๊ฑด์€ ๋ชจ๋ธ์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ™์€ ๋…€์„์ธ์ง€ ๋‹ค๋ฅธ ๋…€์„์ธ์ง€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค. ์ด๋ฅผ ๋™๋“ฑ์„ฑ ๋น„๊ต๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ ์™œ ๋ชจ๋ธ ์„ ์–ธ์— ์žˆ์–ด์„œ ๋™๋“ฑ์„ฑ ๋น„๊ต๊ฐ€ ์ค‘์š”ํ• ๊นŒ? ์ด์œ ๋Š” 3๊ฐ€์ง€๋กœ ์š”์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค. 1. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ํ™•์ธ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด๋ž€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์ •ํ™•ํ•œ ์ƒํƒœ(state)์ž„์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์ด ์ƒ๊ฒจ์„  ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ•์•„์ง€๋ผ๋Š” ๋ชจ๋ธ์„ ๋งŒ๋“ค๊ณ  ๋‘๋งˆ๋ฆฌ ๊ฐ•์•„์ง€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•˜์ž. ๋งŒ์•ฝ ๋‘๋งˆ๋ฆฌ ๊ฐ•..
ยท๐Ÿฆ Flutter
Don't use 'BuildContext's across async gaps.Try rewriting the code to not use the 'BuildContext', or guard the use with a 'mounted' check.๋ธ”๋ก์œผ๋กœ ๋กœ๊ทธ์ธ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.๋กœ๊ทธ์ธ์„ ์„ฑ๊ณตํ•˜๋ฉด ๋ฉ”์ธํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•ด์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— view์—์„œ context๋ฅผ ๋ฐ›์•„์•ผ๋งŒ ํ–ˆ๋‹ค.ํ•˜์ง€๋งŒ ๋กœ๊ทธ์ธ ํ•จ์ˆ˜(๋น„๋™๊ธฐ)์•ˆ์—์„œ๋Š” context๋ฅผ ๊ฑด๋„ค์ฃผ์ง€ ๋ง๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋–ด๋‹ค. ๋ฌธ์ œ ์›์ธ BuildContextBuildContext ๋Š” ์œ„์ ฏํŠธ๋ฆฌ์—์„œ ํ•ด๋‹น ์œ„์ ฏ์ด ํŠธ๋ฆฌ ์–ด๋Š๋ถ€๋ถ„์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์ด๋‹ค. ์ฆ‰ ๋„ค์ด๋ฐ ๊ทธ๋Œ€๋กœ ๋นŒ๋“œํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด(๋ฌธ๋งฅ)์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.  ํ”Œ๋Ÿฌํ„ฐ์—์„œ UI๋ฅผ ๊ทธ๋ ค๋‚ผ..
ยท๐Ÿฆ Flutter
Squircle ์ด๋ž€?ํ”Œ๋Ÿฌํ„ฐ๋กœ sliver ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘ corner radius ๊ฐ’์„ ์ฃผ์–ด ๋์„ ๋‘ฅ๊ธ€๊ฒŒ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ง‰์ƒ ์‹ค๊ธฐ๊ธฐ๋กœ ๋Œ๋ ค๋ณด๋‹ˆ ๋„ํŠธ๋จธ๋ฆฌ๊ฐ€ ๋ฌ˜ํ•˜๊ฒŒ ๊ฐ์ ธ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์•ฑ ๋””์ž์ธ์ด ์ „๋ฐ˜์ ์œผ๋กœ "๋‘ฅ๊ธ€๋‘ฅ๊ธ€" ๋Š๋‚Œ์ด ๋‚˜์•ผํ•˜๋Š”๋ฐ ๋จผ๊ฐ€ SwiftUI์—์„œ ๊ตฌํ˜„ํ–ˆ์„ ๋•Œ๋ž‘ ๋Š๋‚Œ์ด ๋‹ฌ๋ž๋‹ค.. ๋ถ„๋ช… SwiftUI๋Š” CornerRadius๊ฐ’๋งŒ ์ฃผ์–ด๋„ ๋‘ฅ๊ธ€๋‘ฅ๊ธ€ํ•œ ๋Š๋‚Œ์ด ์‚ด์•„์žˆ์—ˆ๋‹ค. ๋ฐฑ๋ฌธ์ด๋ถˆ์—ฌ์ผ๊ฒฌ, ๋ฐ”๋กœ ๊ฐ™์€ Corner Radius๋ฅผ ์ฃผ์–ด SwiftUI์™€ Flutter๋ฅผ ๋น„๊ตํ•ด๋ณด์•˜๋‹ค. ์—ญ์‹œ ์• ํ”Œ ๊ฐ“์œ„๋Š” SwiftUI ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•œ Rounded Container์ด๊ณ  ์•„๋ž˜๋Š”ํ”Œ๋Ÿฌํ„ฐ๋กœ ์ž‘์„ฑํ•œ Rounded Container์ด๋‹ค. ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค๋ณด๋ฉด ํ”Œ๋Ÿฌํ„ฐ ๋ชจ์„œ๋ฆฌ๊ฐ€ ๋ฌ˜ํ•˜๊ฒŒ ๊ฐ์ ธ์žˆ์Œ์„..
suojae
'๐Ÿฆ Flutter' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก