๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

CustomSwitch button์„ ๋”ํ–ˆ๋Š”๋ฐ, ๊ฐ‘์ž๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋‹ค. Error: Cannot run with sound null safety ์•Œ์•„๋ณธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•˜๋‹ค. ๋ฉ”๋‰ด์ฐฝ์—์„œ Run (์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ๊ธฐ์ค€) > Edit Configurations ๊ทธ๋ฆฌ๊ณ  --no-sound-null-safety ๋ผ๋Š” ๋ง์„ Additional run args:์— ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊น”๋”ํ•˜๊ฒŒ ํ•ด๊ฒฐ~ ์•ˆ๋Œ์•„๊ฐ€๋˜ ์ฝ”๋“œ๊ฐ€ ์ž˜ ๋Œ์•„๊ฐ„๋‹ค!!!
์‚ฌ์‹ค, ๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์–ด์„œ ๋งŒ๋“œ๋Š” ํฌ์ŠคํŒ… ๐Ÿ˜… โœ… git branch ๋งŒ๋“ค๊ธฐ ์ฃผ๋กœ ํ„ฐ๋ฏธ๋„์—์„œ ๋ช…๋ น์–ด๋กœ ์ ์–ด์„œ ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ฃ ? ์ €๋„ git ๋งŒ๋“ค๋•Œ ๋ช…๋ น์–ด๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ๋Š๊ปด์กŒ๋Š”๋ฐ ๊ณ„์† ์“ฐ๋‹ค๋ณด๋‹ˆ ๋ช…๋ น์–ด๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ถˆํŽธํ•œ ์ง€๊ฒฝ์ด ๋œ ๊ฒƒ ๊ฐ™์•„์š”. ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋ฉด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ด์„œ ์„ธ๋ถ„ํ™”ํ•ด์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด branch๊ฐ€ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ธŒ๋žœ์น˜๋กœ ๊ฒฝ๋กœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. git checkout -b ํ˜„์žฌ ์–ด๋””์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด git branch ๋ฅผ ๋„ฃ์–ด๋ณด์‹œ๋ฉด ํ˜„์žฌ ์–ด๋Š ๋ธŒ๋žœ์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์–ด์š” ๋งŒ์•ฝ์— ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค?! ๊ทธ๋Ÿฌ๋ฉด switch๋ฅผ ์จ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค git switch โœ… git branch ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์—ˆ..
โ–ช flutter / firebase ์—ฐ๋™ํ•˜๊ธฐ ํ”Œ๋Ÿฌํ„ฐ์™€ firebase๋ฅผ ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์‰ฌ์šด ํŽธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ „ ์˜ค๋ž˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค ๐Ÿ˜‘ firebase ์ฝ˜์†”์—์„œ ์•ˆ๋“œ๋กœ์ดํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  flutter ํŒŒ์ผ๋กœ ๋Œ์•„์™€์„œ app ํด๋”์†์˜ build.gradle ํŒŒ์ผ์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. firebase๋ฌธ์ œ๊ฐ€ ์ƒ์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋ ค์šธ๊ฒŒ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒŒ์ผ๋“ค ์—…๋ฐ์ดํŠธ๋ฅผ ๋๋‚ด๊ณ  ์˜ค๋ฅ˜๋ฉ”์„ธ์ง€๋ฅผ ๋งŒ๋‚ฌ๋Š”๋ฐ, flutter sdk๋ฒ„์ ผ๊ณผ firebase ๋ฒ„์ ผ์ด ์ƒํ˜ธ๊ฐ€ ์•ˆ ๋˜์„œ์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Ÿด๋• android > app > build.gradle ํŒŒ์ผ์— midSdkVersion๊ณผ targetSdkVersion์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋งŒ ๋”ํ•ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ ์ „ ๊ทธ๊ฑธ ๋ชจ๋ฅด๊ณ  ์—„์ฒญ ํ•ด๋งธ..
โ–ช Literal types const userName1 = "Bob"; let userName2 = "Tom"; const๋Š” ์ƒ์ˆ˜๋กœ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ์„ ์–ธํ•  ๋•Œ, let๋Š” ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ € ์ƒํƒœ์—์„œ VSC๊ฐ™์€ ์—๋””ํ„ฐ์—์„œ ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ค๋ณด๋ฉด const๋Š” "Bob"์ด๋ผ๊ณ  ์„ ์–ธ ๋œ ๊ฐ’์ด ๋œจ๊ณ , let์€ let userName2 : string์ด๋ผ๋Š” ํƒ€์ž… ๊ฐ’์ด ๋œน๋‹ˆ๋‹ค. let์€ ์–ธ์ œ๋“  ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. userName2 ์— ์ˆซ์ž๋ฅผ ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด? let userName2 : string | number = "Tom"; ์ด๋ ‡๊ฒŒ ํƒ€์ž…์„ ๋‘˜ ๋‹ค ๋ช…์‹œํ•ด์ค๋‹ˆ๋‹ค. type Job = "police" | "developer" | "teacher"; interface User..
โ–ช React๋Š” NextJS๋ฅผ ์ด์šฉํ•ด์„œ SSR์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ–ช Static Generation vs Server-side Rendering pre-rendering(์‚ฌ์ „๋ Œ๋”๋ง) ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ํŽ˜์ด์ง€ pre-render - ์‚ฌ์ „์— HTML ํŒŒ์ผ๋“ค์„ ๋งŒ๋“ ๋‹ค๋Š” ์˜๋ฏธ๋กœ ํผํฌ๋จผ์Šค๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  SEO์— ์ตœ์ ํ™”๋œ๋‹ต๋‹ˆ๋‹ค. Javascript์„ ๋„๊ณ  ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋ง์„ ํ•ด๋„ HTML์ด ๋ Œ๋”๋ง๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ Javascript์„ ๋ณต์›์‹œ์ผœ์ฃผ๋ฉด hydration์ด ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ •์ ์ธ ํŽ˜์ด์ง€๊ฐ€ ๋™์ ์œผ๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค Static Generation : ์ •์ ์ƒ์„ฑ vs Server-side Rendering : ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง ์ด ๋‘ ๊ฐ€์ง€์˜ ์ฐจ์ด์ ์€ ์–ธ์ œ HTML ์„ ๋งŒ๋“œ๋ƒ์ž…๋‹ˆ..
1. ๋ฐ”๋ฒจ(babel)์ด๋ž€? โ–ช ๋ธŒ๋ผ์šฐ์ €๋‚˜ ํ”Œ๋žซํผ๋งˆ๋‹ค ๋ณด์—ฌ์ง€๋Š” ๋ชจ์Šต์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์ด๋Ÿฌํ•œ ์ฐจ์ด๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €, ํ™˜๊ฒฝ์— ์˜ํ–ฅ์„ ๋œ ๋ฐ›๊ณ  ํ•ด๋‹น ์›น ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ตœ์ ํ™”๋ฅผ ํ•˜๋Š” ์ž‘์—…์„ ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง•์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ๋Š” ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ด์Šˆ๋Š” ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ๋„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•˜๋Š” ์š”์†Œ ์ค‘์— ํ•˜๋‚˜์ด๋‹ค. ์ด๋Ÿฐ ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ํˆด์ด ๋ฐ”๋ฒจ์ด๋‹ค! ES6+ ๋ฒ„์ „์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋‚˜ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ, JSX ๋“ฑ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋ถ„๋ฅ˜๋˜๋Š” ์–ธ์–ด๋“ค์— ๋Œ€ํ•ด์„œ๋„ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ˜ธํ™˜์„ฑ์„ ์ง€์ผœ์ค€๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๋Š” ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ์˜ ์—ญํ• ์„ ํ•œ๋‹ค. ๋ฐ”๋ฒจ ์„ค์ •์„ ํ•  ๋•Œ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๋‘๊ฐ€์ง€ ํŒŒ์ผ ํฌ๋งท์€ ๋‹จ๋…์œผ๋กœ ์“ฐ์ผ ์ˆ˜๋„ ์žˆ๊ณ , ํ•จ๊ป˜ ์“ฐ์ผ ..
{ "presets": ["next/babel"] } github์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ํด๋ก ํ•œ ํ›„์— npm installํ•˜๊ณ  npm run build๋ฅผ ํ•˜๋Š”๋ฐ, SWC failed to load ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค. ๊ทธ๋ฆฌ๊ณ  https://nextjs.org/docs/messages/failed-loading-swc ์—ฌ๊ธฐ๋ฅผ ๋ฐฉ๋ฌธํ•ด๋ณด๋ผ๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋– ์„œ ๋ดค๋”๋‹ˆ node modules๊ณผ package-lock.json์„ ์ง€์šฐ๊ณ  ๋‹ค์‹œ npm install์„ ํ•˜๊ฑฐ๋‚˜, ๊ทธ๋ž˜๋„ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์†๋˜๋ฉด .babelrcํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋ผ๊ณ  ํ–ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ ๋ชจ๋“ˆ์„ ์ง€์› ๋Š”๋ฐ๋„, ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ๋˜ ์ƒ๊ฒจ์„œ ํ”„๋กœ์ ํŠธ ์ž์ฒด๋ฅผ ๋‹ค์‹œ ํด๋ก  ๋ฐ›๊ณ , babelrc ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์คฌ๋‹ค! ์•„๋ž˜์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋œ๋‹ค. ํŒŒ์ผ์˜ ์œ„์น˜๋Š” ์ตœ์ƒ๋‹จ์ด๋‹ค! .babelrc { "..
โ–ช ์™„์„ฑ ํ•  ๋ ˆ์ด์•„์›ƒ ์ € ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š”๋ฐ, ์ „์ฒด์ ์œผ๋กœ ๊ฐ์‹ผ Container ๊ฐ€ ์žˆ๊ณ , ๊ทธ ์•ˆ์— Column๋กœ ํ•œ๋ฒˆ ๋” ๊ฐ์‹ธ๊ณ , ๊ฐ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ์„ค๊ณ„ ๊ณ„ํš์„ ์„ธ์› ๋‹ค. Column( children: [ 1. Container - ํ•™๊ต ์ด๋ฉ”์ผ์ด๋ผ๋Š” Text๋ฅผ ์“ธ ๊ฒƒ 2. Row - TextFormField(์ด๋ฉ”์ผ input) , OutlinedButton(์ธ์ฆํ•˜๊ธฐ) 3. SizedBox - input ์‚ฌ์ด์— ๊ฐ„๊ฒฉ์„ ์œ„ํ•ด์„œ 4. TextFormField - ์ธ์ฆ๋ฒˆํ˜ธ ์ž…๋ ฅ input 5. OutlinedButton - ๋‹ค์Œ ๋ฒ„ํŠผ ] ) โ–ช ๋ฌธ์ œ ๋ฐœ์ƒ 1์„ ํ•˜๊ณ  2๋ฒˆ์œผ๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ ์šฐ์„  Row๋ฅผ ์•ˆ ์“ฐ๊ณ , TextFormField๋ฅผ ๋จผ์ € ์ผ๋Š”๋ฐ ํ™”๋ฉด์— ์ถœ๋ ฅ์ด ์•ˆ ๋˜๋Š”๊ฑฐ๋‹ค! ์ด ์ „์— ์œ ํŠœ๋ฒ„ ..
React Project๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด์„œ Reducer์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์˜ฌ ๋•Œ ์ƒ๊ฒจ๋‚œ ์˜ค๋ฅ˜์ด๋‹ค. Reducer store์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ useSelector๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•˜๋ฉด๋˜๋Š”๊ฑด๋ฐ, ์ด์ „์—๋Š” ์ž˜ ๋˜๋˜๋ฐ ๊ฐ‘์ž๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ•ด์„œ undefined ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ƒ๊ธด ์˜ค๋ฅ˜์ด๋‹ค. React ํŒŒ์ผ ์ผ๋ถ€, let scoreMention = ""; if(userInfo['scorelist'] == null){ return null }else{ if(userLan === "kr"){ Object.keys(userInfo['scorelist']).map((c, idx) => { if (scoreper >= parseInt(c)) { return (scoreMention = use..
ํ”Œ๋Ÿฌํ„ฐ์—์„œ๋Š” route๋ผ๋Š” ๊ฐœ๋…์œผ๋กœ ํŽ˜์ด์ง€ ์ด๋™์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์ด๋™ํ•  ๊ณณ์„ page๋ผ๊ณ  ์ƒ๊ฐํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ตณ์ด ํŒŒ์ผ์„ ๋”ฐ๋กœ ๋‚˜๋ˆ„์ง€ ์•Š์•„๋„ ๊ฐ™์€ ํŒŒ์ผ ์•ˆ์—์„œ page๋งŒ ๋‚˜๋ˆ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฐธ ์‰ฝ์ฃต? ๐Ÿ˜ ์ด๋™ ํ•  ๋•Œ ์“ฐ๋Š” ๊ฒƒ์œผ๋กœ๋Š” Navagator ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. main.dart Container( margin: EdgeInsets.only(top: 100, left: 0), width: 100, child: IconButton( icon: Text('Signup', style: TextStyle(fontSize: 20),), onPressed: (){ Navigator.push(context, MaterialPageRoute(builder: (context) => SignUpPage(..
ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋Š” ์™œ ์ค‘์š”ํ•œ๊ฐ€์š”? ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง ํ•  ๋•Œ, ํ˜น์€ ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜์ง€ ์•Š์•„๋„ ์ค‘์š”ํ•œ ์กด์žฌ์ž…๋‹ˆ๋‹ค. ๋ฆฌํŒฉํ† ๋ง์„ ํ•  ๋•Œ์—๋Š” ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์งœ๋‘๊ณ  ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๋ฉด ํ•˜๊ธฐ ์ „๊ณผ ํ›„์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™ธ์—๋„ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๋“ค์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด๋‘๋ฉด ์œ ์ง€๋ณด์ˆ˜ํ•  ๋•Œ ์˜ˆ์ƒ์น˜ ๋ชป ํ•œ ์—๋Ÿฌ๋“ค์„ ๋ฏธ๋ฆฌ ๋ฐฉ์ง€ํ•  ์ˆ˜ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ์„œ์ ์—์„œ๋„ ์ด ์ค‘์š”์„ฑ์„ ๊ต‰์žฅํžˆ ๊ฐ•์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. React Testing Library๋Š” ์„ธ๋ถ€์ ์ธ ๊ตฌํ˜„์‚ฌํ•ญ๋ณด๋‹ค๋Š” ์‹ค์ œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๋ฅผ ๊ถŒ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ div ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ณด๋‹ค div ํ…Œ๊ทธ์˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ์ž˜ ๋…ธ์ถœ..
๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๋ถ„์„ ์†์ˆ˜ ์“ฐ์ง€ ์•Š๊ณ  ๋ฐ˜๋ณตํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ListView.builder ์ด๋‹ค. โ—พ Example ์ง€๊ธˆ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด ๋ณผ ๋ถ€๋ถ„์ธ๋ฐ ๋ณด๋ผ์ƒ‰์ด list_view๋ถ€๋ถ„์ด๊ณ  icons๊ฐ€ ํŒŒ๋ž€์ƒ‰๋ถ€๋ถ„์ด๋‹ค โ—พ Code list_view์— ๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๋ถ„์„ ๋”ฐ๋กœ ํŒŒ์ผ(icons.dart)๋กœ ๋นผ์„œ ๋”ํ•˜๋Š”๊ฑฐ๋‹ค. list_view.dart Container( margin: EdgeInsets.only(top: 10, bottom: 20), child: Text('${descList[index]}'), ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${majorList[index]}', style: T..
๋ฐ(Ming) ๐Ÿฐ
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (12 Page)