Dart, Flutter/๐Ÿณ Basic

Dart [Hello World!]

jo._.on_ 2023. 12. 21. 17:59

 

<Visual Studio Code>


 Microsoft์˜ VS code๋ฅผ ๋‹ค๋“ค ์•Œ ๊ฒƒ์ด๋‹ค. ์™œ ๋œฌ๊ธˆ์—†์ด ์—๋””ํ„ฐ๋ฅผ ์–ธ๊ธ‰ํ•˜๋А๋ƒ? ์ฒซ ํฌ์ŠคํŒ…์—์„œ๋„ ์–ธ๊ธ‰ํ–ˆ๋‹ค์‹œํ”ผ, ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด๋ผ๋ฉด MSVC์™€ ๊ฐ™์ด ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์‹œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํƒ€์ดํ•‘ํ•  ๋•Œ ์—๋””ํ„ฐ(editor)๋ผ๊ณ  ํ•˜๋Š” ๊ฑธ ๋งŽ์ด ์“ธ ๊ฒƒ์ด๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์—๋””ํ„ฐ๋Š” ํƒ€์ดํ•‘์„ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ˆ˜์ค€์ด์ง€๋งŒ, MSVC๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋งž๋Š” ๋‹ค์–‘ํ•˜๊ณ  ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ, ํ”„๋กœ๊ทธ๋žจ์˜ ์˜ค๋ฅ˜๋ฅผ ์ดˆ๊ธฐ์— ์ œ๊ฑฐํ•˜๋Š” ์šฉ๋„๊ฐ€ ๋งŽ์ด ๋“ค์–ด ์žˆ๋‹ค. (์ด ๊ธฐ๋Šฅ์ด ๊ต‰์žฅํžˆ ๊ฐ•๋ ฅํ•จ!!)

 

 ๋ฐ˜๋ฉด์— IDE(Integrated Development Environment)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋„ ์žˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ MS์˜ Visual Studio, Apple์˜ Xcode, ์˜คํ”ˆ์†Œ์Šค์ธ Eclipse ๋“ฑ์ธ๋ฐ, IDE๋Š” ์—๋””ํ„ฐ์˜ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋ฉด์„œ, ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ , ์˜ค๋ฅ˜๋ฅผ ์žก๋Š” ๋””๋ฒ„๊ทธ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๋˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋“ฑ์˜ ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•˜๋Š”๋ฐ, MSVC๋Š” ์—๋””ํ„ฐ์˜ ์˜์—ญ์ด์ง€๋งŒ ๊ฐ์ข… Extension์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ, IDE์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋„๊ตฌ๋‹ค. (๋”ฐ๋ผ์„œ DartPad ์™€ ๊ฐ™์€ ์˜จ๋ผ์ธ ๊ฐœ๋ฐœํ™˜๊ฒฝ๋„ ์ข‹์ง€๋งŒ, ๋น„๋‹จ '๊ฐœ๋ฐœ์ž'๋ผ๋ฉด vs code์—๋„ ์ต์ˆ™ํ•ด์งˆ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๋งŽ์ด ์• ์šฉํ•˜๋„๋ก!!)

 

<Hello World!>


vscode ๋‚ด Dart ์–ธ์–ด์˜ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์•ž์„œ extension ์—์„œ Dart๋ฅผ ์„ค์น˜ํ–ˆ์„ ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ์€ vscode ๋‚ด Dart ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์˜ ์ผํ™˜์ด๋‹ค. Windows ์‚ฌ์šฉ์ž๋ผ๋ฉด ๋ณด๊ณ  ์ฐธ๊ณ ํ•ด๋„ ์ข‹์„ ๋“ฏํ•˜๋‹ค. (macOS๋Š” ๊ต์žฌ์— ์ฒจ๋ถ€๋œ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค.)

 

1) DART-TUTORIAL์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ž‘์—…์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํŒŒ์ผ(dart_tutorial_06_01.dart)์„ ํ•˜๋‚˜ ์ƒ์„ฑํ–ˆ๋‹ค.

๊ทธ๋ฆผ1) 

๊ทธ๋ฆผ1)

 

2) ์ดˆ๊ธฐ Dart ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋””๋ฒ„๊น…์„ ํ•ด๋ณด๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค. MSVC๋Š” Dart ์–ธ์–ด ์ „์šฉ์˜ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๊ณ , Dart ์–ธ์–ด๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™•์žฅํ•œ ๊ฒƒ์ด๋ผ, ๋ถ€์กฑํ•œ ์„ค์ •์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž…๋ ฅํ•ด ์ค˜์•ผํ•œ๋‹ค. 

 

dart_tutorial_06_01.dart ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด, ๊ทธ๋ฆผ2)์™€ ๊ฐ™์€ ๋‚ด์šฉ์ด ๋‹ด๊ธด ํƒญ ({ } launch.json  : ms code๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์‹คํ–‰ํ™˜๊ฒฝ) ์ด ์—ด๋ฆฌ๋Š”๋ฐ, ์ด๋•Œ ์ด json ํŒŒ์ผ ๋‚ด๋ถ€์— ์ถ”๊ฐ€์ ์œผ๋กœ ์ž…๋ ฅํ•  ์‚ฌํ•ญ๋“ค์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ๋‹ค. 

launch.json ํŒŒ์ผ. ๊ทธ๋ฆผ2)

 

์ € "configurations" :  [ ] ๋‚ด๋ถ€์— ์šฐ๋ฆฌ๋Š” ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค ํ•œ๋‹ค. [ ] ๋‚ด๋ถ€์— dart ์–ธ์–ด๋ฅผ ์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค. mac ์‚ฌ์šฉ์ž๋ผ๋ฉด, "program" : "bin/main.dart" ๋กœ ์ง€์ •๋˜์–ด ์žˆ์„ํ…๋ฐ, ์ด๋ฅผ ์•„๋ž˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋ณธ์ธ์ด ์„ค์ •ํ•œ ํŒŒ์ผ๋ช…์— ๋งž๊ฒŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค. ๋งž๊ฒŒ ์„ค์ •ํ–ˆ๋‹ค๋ฉด ๋‹ค์‹œ ๋””๋ฒ„๊น…์œผ๋กœ ๋Œ์•„๊ฐ€๋ณด์ž. 

{  
        "name" : "Dart",
        "program" : "dart_tutorial_06_01.dart",
        "request" : "launch",
        "type" : "dart"
}

// configuration [] ์˜ ๋‚ด๋ถ€ ๋ช…๋ น์–ด

 

์•„๋ž˜ ๊ทธ๋ฆผ3)๊ณผ ๊ฐ™์ด ๋””๋ฒ„๊น… ๋ฒ„ํŠผ์ด ๋ฐ”๋€Œ์–ด์žˆ์„ ๊ฒƒ์ด๋‹ค.

๋””๋ฒ„๊น… ๋ฒ„ํŠผ. ๊ทธ๋ฆผ3)

 

3) ์œ„์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด Dart ์–ธ์–ด ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ดˆ๊ธฐ ์„ธํŒ…์€ ๊ฑฐ์˜ ๋๋ƒˆ๋‹ค๊ณ  ๋ด๋„ ๋œ๋‹ค. ์ด์ œ hello world ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž. C์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด๋ดค๋‹ค๋ฉด(์•„๋‹ˆ์ง€... ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด๋ณธ ์‚ฌ๋žŒ์ด๋ผ๋ฉด!)  print("Hello, World!");๋ผ๋Š” ์ฝ”๋“œ๋ฅผ ๋ชจ๋ฅผ ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค. ํ•œ๋ฒˆ ์‹คํ–‰ํ•ด๋ณด์ž. 

 

 

1. void main() ํ•จ์ˆ˜ ๋‚ด๋ถ€์— print("hello world!"); ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Debug or Run.

2. ์ฝ”๋“œ ๋ฐ”๋กœ ์œ„์— Run|Debug ๊ฐ€ ๋– ์žˆ๋Š” ๊ฑด ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ์ฐจ์ด(??)์ธ ๋“ฏํ•˜๋‹ค. ์‹ค์ œ๋กœ Run์„ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ์ž๋™์œผ๋กœ ๋””๋ฒ„๊น…์„ ๊ฑฐ์ณ ์ฝ˜์†”์ฐฝ ๊ทธ๋ฆผ5)์— hello world! Exited ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. (๋‚˜์ค‘์— ์ž˜ ์จ๋จน์„ ๋“ฏใ…‹ใ…‹)

๊ทธ๋ฆผ4)
๊ทธ๋ฆผ 5)

 

 

<๋А๋‚€ ์ >


์ƒˆ์‹น ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด๋ผ๋ฉด Hello World ๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ๋ชจ๋ฅผ ์ˆ˜ ์—†์„ํ…๋ฐ, (์ด ํ•œ ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐˆ๋ ธ๋˜๊ฐ€..?) ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ฒซ ๋””๋”ค๋ฐœ์€ ๊ฐœ๋ฐœํ™˜๊ฒฝ์˜ ๊ตฌ์ถ•์ด๋‹ค. ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๊ธฐ๋„ ํ•œ๋ฐ, DartPad์™€ ๊ฐ™์ด ์˜จ๋ผ์ธ์—์„œ ๋Œ์•„๊ฐ€๋Š” ํ™˜๊ฒฝ๋„ ๋ฌผ๋ก  ์ข‹๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋ณธ์ธ๋งŒ์˜ ์‹ค์Šตํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ๋„์ ์ธ ๊ณผ์ •๋„ ํ•„์š”ํ•˜๋‹ค. (๊ทธ๋Ÿฌ๋ฉด์„œ ๋จธ๋ฆฌ์— ๋” ์ž˜ ๋“ค์–ด์˜ค๋Š”๋“ฏ!) ๊ทธ๋ฆฌ๊ณ  VS code์˜ ์„ค์น˜๋„ ๊ถŒ์žฅํ•˜๋Š” ๊ฑด inline trace ๊ธฐ๋Šฅ๊ณผ ๋””๋ฒ„๊น…์˜ ๊ฐ•๋ ฅํ•จ ๋•Œ๋ฌธ์ด๋‹ค. ์—๋””ํ„ฐ์˜ ๋‹จ์ˆœํ•œ ๊ธฐ๋Šฅ๋„ ์žˆ์ง€๋งŒ ํ•œ ์ค„ ํ•œ ์ค„ ์ฝ์–ด๊ฐ€๋ฉด์„œ ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ ์„ ์ฐ์–ด์ฃผ๊ณ  ๊ถŒ์žฅ๊นŒ์ง€ ํ•ด์ฃผ๋‹ˆ ์ด๋ณด๋‹ค ํŽธ๋ฆฌํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค;; ๋•Œ๋ฌธ์— ๊ผญ Dart๊ฐ€ ์•„๋‹ˆ๋ผ python๊ณผ ๊ฐ™์€ ์–ธ์–ด์˜ ์‚ฌ์šฉ์„ ํ•˜๋”๋ผ๋„ vscode์˜ ์‚ฌ์šฉ์€ ๊ผญ!๊ผญ! ๊ถŒ์žฅํ•œ๋‹ค.

 

(์ด์ƒ ๊ผฌ๊ผฌ๋งˆ ๊ฐœ๋ฐœ์ž๊ฐ€.. ์ฃผ์ œ๋„˜๊ฒŒ ์ž”์†Œ๋ฆฌ ํ•œ ๋ฒˆ ํ–ˆ๋‹ค..ใ…Ž)