๐ŸŒฑSeSac Flutter ๊ฐ•์˜_7/24 : Widget ๋ถ„๋ฆฌ์™€ ๋ฐ˜๋ณต

KiKi ManGoยท2026๋…„ 8์›” 3์ผ

SeSac_DartFlutter

๋ชฉ๋ก ๋ณด๊ธฐ
9/18

โœ”๏ธํ•™์Šต๋‚ด์šฉ ์š”์•ฝ

  • Widget์„ ๋ถ„๋ฆฌํ•ด์„œ importํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›€
  • ๊ธฐ๋ณธ Widget์œผ๋กœ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›€

1. Widget ๋ถ„๋ฆฌํ•˜๊ธฐ

  • Widget๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์ด์œ ? ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ
  • Widget๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ์ข‹์€ ๊ฒฝ์šฐ
    • ๋™์ผํ•œ UI๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•  ๋•Œ
    • ํ•˜๋‚˜์˜ Widget์ด ๋„ˆ๋ฌด ์ปค์งˆ ๋•Œ
    • ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜๋ˆ„๊ณ  ์‹ถ์„ ๋•Œ
  • main.dart ํŒŒ์ผ์—์„œ import '/workout_list_page.dart';
  • workout_list_lage.dart ํŒŒ์ผ์—์„œ import 'package:flutter/material.dart'; ์ถ”๊ฐ€

์ฐธ๊ณ -์ ˆ๋Œ€๊ฒฝ๋กœ, ์ƒ๋Œ€๊ฒฝ๋กœ

๊ตฌ๋ถ„์ƒ๋Œ€๊ฒฝ๋กœ์ ˆ๋Œ€๊ฒฝ๋กœ(package)
๊ธฐ์ค€ํ˜„์žฌ ํŒŒ์ผํ”„๋กœ์ ํŠธ(lib)
์ž‘์„ฑ ์˜ˆ์‹œwidgets/menu_card.dartpackage:my_app/widgets/menu_card.dart
์œ ์ง€๋ณด์ˆ˜์ƒ๋Œ€์ ์œผ๋กœ ์–ด๋ ค์›€์‰ฌ์›€
๊ถŒ์žฅ ์—ฌ๋ถ€์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธโญ Flutter ๊ถŒ์žฅ

2. List UI ๊ตฌ์„ฑํ•˜๊ธฐ

  • List ํ˜•ํƒœ์˜ ํ™”๋ฉด์„ ๋งŒ๋“ค๋ฉด์„œ Flutter์˜ ๊ธฐ๋ณธ Widget์„ ํ™œ์šฉํ•œ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ
  • AppBar Widget: ํ™”๋ฉด ์ƒ๋‹จ์˜ ์ œ๋ชฉ๊ณผ ์•ก์…˜ ๋ฒ„ํŠผ์„ ํฌํ•จํ•œ Navigation Bar ๊ตฌ์„ฑ
  • Column Widget: Widget์„ ์„ธ๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ
  • Row Widget: Widget์„ ๊ฐ€๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ
  • DecorationImage: Container์˜ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • Alignment: Widget์˜ ์œ„์น˜์™€ ์ •๋ ฌ์„ ์ œ์–ดํ•˜๋Š” ์†์„ฑ

3. Expanded Widget ํ™œ์šฉ

  • Expanded๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
    • Row๋‚˜ Column ์•ˆ์˜ Widget์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž์‹ ์˜ ํฌ๊ธฐ๋งŒํผ๋งŒ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š”๋ฐ,
    • Expanded๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‚จ์•„ ์žˆ๋Š” ๊ณต๊ฐ„์„ ์ž๋™์œผ๋กœ ์ฑ„์›Œ ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ์„ ์‰ฝ๊ฒŒ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ

4. ๋ฐ˜๋ณต๋˜๋Š” Widget ์ œ์–ด

  • Helper Function: ๋ฐ˜๋ณต๋˜๋Š” Widget์„ ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ
  • Overflow: ํ™”๋ฉด์„ ๋ฒ—์–ด๋‚˜๋Š” ๋ ˆ์ด์•„์›ƒ ์˜ค๋ฅ˜์˜ ์›์ธ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
  • WorkoutListPage ๊ตฌํ˜„: ์ง€๊ธˆ๊นŒ์ง€ ํ•™์Šตํ•œ Widget์„ ํ™œ์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ ํ™”๋ฉด ์™„์„ฑ
//filename:workout_list_page.dart
List<Row> getWorkoutList(){
  return [];
}

๐Ÿ“์ˆ˜๊ฐ•ํ›„๊ธฐ

  • Widget ํ™œ์šฉํ•ด์„œ ํ™”๋ฉด ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋ฉด์„œ ์–ด๋–ป๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•ด์•ผ ๊ฐ€๋…์„ฑ์ด ์ข‹๊ณ , dart๋ฅผ ์ดํ•ดํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค.
  • Expanded ์•ž์œผ๋กœ๋„ ๋งŽ์ด ํ™œ์šฉํ•  ๊ฑฐ ๊ฐ™์•„์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๊ฑฐ ๊ฐ™์•˜๋‹ค.
  • ๋ฐ˜๋ณต๋˜๋Š” Widget ๋ถ€๋ถ„์€ ์ถ”ํ›„์— ์‘์šฉํ•˜๊ณ  ์‹ถ์–ด์„œ ๊ฐ€์Šด์ด ์ฝฉ๋‹ฅ๊ฑฐ๋ ธ๋‹ค...๐Ÿ’“ ์˜ค๋žœ๋งŒ์— ๋А๊ปด๋ณธ ๊ฐ€์Šด ๋–จ๋ฆผ์ด๋ผ ๋นจ๋ฆฌ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ๋‹ค.
profile
๐Ÿฅญ ํญ๋„“์€ ๊ฒฝํ—˜์„ ์”จ์•— ์‚ผ์•„, ๊นŠ์ด๋ฅผ ๋‹ค์ง€๋ฉฐ ์ง€๊ธˆ ์ต์–ด๊ฐ€๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€