ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ํƒ€์ด๋จธ ๊ฐœ๋ฐœ์ผ๊ธฐ 1
    ์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ 2025. 3. 11. 21:10

    ๐Ÿš€ ์˜ค๋Š˜์˜ Flutter ๊ฐœ๋ฐœ ๊ธฐ๋ก (ํƒ€์ด๋จธ ์•ฑ ๋งŒ๋“ค๊ธฐ)

    ๐Ÿ“… 2025๋…„ 3์›” 11์ผ
    ๐ŸŽฏ ๋ชฉํ‘œ: Flutter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์ค‘ ํƒ€์ด๋จธ ์•ฑ์„ ๋งŒ๋“ค๊ณ , ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์ข‹์€ ๊ตฌ์กฐ๋กœ ๊ฐœ์„ 


    โœ… ์˜ค๋Š˜ ํ•œ ์ผ ์š”์•ฝ

    1. Flutter ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

    • VS Code์—์„œ Flutter ์„ค์น˜ ๋ฐ ์„ค์ •
    • iOS & Android ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์‹คํ–‰ ๋ฌธ์ œ ํ•ด๊ฒฐ (flutter doctor)
    • iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์‹คํ–‰ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ (open -a Simulator)
    • Flutter ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ (flutter create timer_app)
    • Flutter ์•ฑ ์ฒซ ์‹คํ–‰ (flutter run)

    2. ํƒ€์ด๋จธ ์•ฑ ๊ธฐ๋ณธ UI ๊ตฌํ˜„

    • ํƒ€์ด๋จธ ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜๋Š” ListView ์ƒ์„ฑ
    • + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํƒ€์ด๋จธ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (์ด๋ฆ„ & ์‹œ๊ฐ„ ์ž…๋ ฅ ๊ฐ€๋Šฅ)
    • AlertDialog๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€์ด๋จธ ์ถ”๊ฐ€ํ•˜๋Š” UI ์™„์„ฑ

    3. ํƒ€์ด๋จธ ๋™์ž‘ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

    • Timer.periodic์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค๋„๋ก ๊ตฌํ˜„
    • play/pause ๋ฒ„ํŠผ ์ถ”๊ฐ€ → ํƒ€์ด๋จธ ์‹œ์ž‘ & ์ผ์‹œ์ •์ง€ ๊ฐ€๋Šฅ
    • ์‹œ๊ฐ„์ด 0์ด ๋˜๋ฉด ์ž๋™์œผ๋กœ ์ •์ง€

    4. ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

    • main.dart ํ•œ ํŒŒ์ผ์— ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ , ํŒŒ์ผ & ํด๋” ๋ถ„๋ฆฌ
    • ๊ฐ์ฒด์ง€ํ–ฅ์  ์„ค๊ณ„๋ฅผ ์ ์šฉํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ดํ•œ ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝ

    ๐Ÿ“Œ ํด๋” ๊ตฌ์กฐ ์ •๋ฆฌ:

    lib/
    โ”‚โ”€โ”€ main.dart                 # ์•ฑ์˜ ์ง„์ž…์ 
    โ”‚โ”€โ”€ screens/                  # ํ™”๋ฉด (UI ๊ด€๋ จ)
    โ”‚   โ”œโ”€โ”€ home_screen.dart       # ํƒ€์ด๋จธ ๋ฉ”์ธ ํ™”๋ฉด
    โ”‚โ”€โ”€ models/                   # ๋ฐ์ดํ„ฐ ๋ชจ๋ธ
    โ”‚   โ”œโ”€โ”€ timer_model.dart       # ํƒ€์ด๋จธ ๋ชจ๋ธ ํด๋ž˜์Šค
    โ”‚โ”€โ”€ widgets/                  # ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์œ„์ ฏ
    โ”‚   โ”œโ”€โ”€ timer_tile.dart        # ํƒ€์ด๋จธ ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ UI
     

    โœ… ์˜ค๋Š˜ ์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„ & ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

    1๏ธโƒฃ flutter doctor์—์„œ iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์•ˆ ๋ณด์ด๋Š” ๋ฌธ์ œ

    ๐Ÿ”น ๋ฌธ์ œ:

    • flutter devices ์‹คํ–‰ ์‹œ iPhone์ด ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Œ
    • flutter run -d iOS ์‹คํ–‰ ๋ถˆ๊ฐ€

    ๐Ÿ”น ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

    • open -a Simulator๋กœ iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์ง์ ‘ ์‹คํ–‰
    • xcode-select --switch /Applications/Xcode.app/Contents/Developer๋กœ Xcode ์„ค์ • ์žฌ์ ์šฉ
    • flutter doctor ์‹คํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ํ•ด๊ฒฐ๋๋Š”์ง€ ํ™•์ธ

    โœ… ๊ฒฐ๊ณผ: iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์ •์ƒ ์ธ์‹ ๋ฐ ์‹คํ–‰ ์„ฑ๊ณต ๐ŸŽ‰


    2๏ธโƒฃ List<String> vs List<Map<String, dynamic>> ํƒ€์ž… ์˜ค๋ฅ˜ ๋ฐœ์ƒ

    ๐Ÿ”น ๋ฌธ์ œ:

    type 'List<String>' is not a subtype of type 'List<Map<String, dynamic>>'
    • ๊ธฐ์กด์— List<String>์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ List<Map<String, dynamic>>์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•œ ํƒ€์ž… ์˜ค๋ฅ˜

    ๐Ÿ”น ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

    • List<Map<String, dynamic>>์„ ๋ช…ํ™•ํžˆ ์„ ์–ธํ•˜๊ณ , flutter clean์œผ๋กœ ์บ์‹œ ์ •๋ฆฌ ํ›„ ๋‹ค์‹œ ์‹คํ–‰
    • timers.add({'name': ..., 'time': ..., 'isRunning': false}) → ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ช…ํ™•ํžˆ ๋ณ€๊ฒฝ

    โœ… ๊ฒฐ๊ณผ: ํƒ€์ž… ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐ ์ •์ƒ ์‹คํ–‰ ๐ŸŽ‰


    3๏ธโƒฃ type 'Null' is not a subtype of type 'bool' ์˜ค๋ฅ˜ ๋ฐœ์ƒ

    ๐Ÿ”น ๋ฌธ์ œ:

    type 'Null' is not a subtype of type 'bool'
     
    • isRunning ๊ฐ’์„ ๋ช…ํ™•ํžˆ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์•„์„œ ๋ฐœ์ƒ

    ๐Ÿ”น ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

    timers.add({
      'name': nameController.text,
      'time': int.tryParse(timeController.text) ?? 0,
      'isRunning': false, // โœ… ๋ช…ํ™•ํ•œ ์ดˆ๊ธฐํ™” ์ถ”๊ฐ€
    });

     

    โœ… ๊ฒฐ๊ณผ: ๋” ์ด์ƒ null ๊ด€๋ จ ์˜ค๋ฅ˜ ์—†์ด ์ •์ƒ ์‹คํ–‰ ๐ŸŽ‰


    ๐Ÿ”ฅ ์˜ค๋Š˜์˜ ์„ฑ๊ณผ

    โœ… Flutter ํ™˜๊ฒฝ ์„ค์ • ์™„๋ฃŒ & ์•ฑ ์‹คํ–‰ ๊ฐ€๋Šฅ
    โœ… ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ํŒŒ์ผ & ํด๋” ๊ตฌ์กฐ ๋ถ„๋ฆฌ ์™„๋ฃŒ
    โœ… ๋‹ค์ค‘ ํƒ€์ด๋จธ ์ถ”๊ฐ€ + ์‹œ์ž‘/์ผ์‹œ์ •์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    โœ… iOS & Android์—์„œ ์ •์ƒ ์‹คํ–‰ ํ™•์ธ (flutter run)
    โœ… ๋””๋ฒ„๊น… & ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ ํ–ฅ์ƒ


    ๐Ÿš€ ๋‹ค์Œ ๋ชฉํ‘œ

    ๐Ÿ”น ํƒ€์ด๋จธ ์‚ญ์ œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
    ๐Ÿ”น ํƒ€์ด๋จธ ์™„๋ฃŒ ์‹œ ์•Œ๋ฆผ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
    ๐Ÿ”น UI ๋””์ž์ธ ๊ฐœ์„  (๋” ์ง๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค ์ ์šฉ)
    ๐Ÿ”น ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋Šฅ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ์‹ ๊ณ ๋ฏผ

Designed by Tistory.