{"id":817,"date":"2020-08-27T09:00:00","date_gmt":"2020-08-27T00:00:00","guid":{"rendered":"http:\/\/mobilelab.khu.ac.kr\/?p=817"},"modified":"2020-08-27T08:37:09","modified_gmt":"2020-08-26T23:37:09","slug":"be-dart-programmer-31","status":"publish","type":"post","link":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/2020\/08\/27\/be-dart-programmer-31\/","title":{"rendered":"Dart Programmer \ub418\uae30 [31]"},"content":{"rendered":"\n<h4>&lt; Flutter \ud65c\uc6a9\ud558\uae30 &#8211; Hello World! &gt;<\/h4>\n\n\n\n<p>\uc55e\uc11c\uc5d0\uc11c Dart \uc5b8\uc5b4\ub97c \uc124\uce58\ud55c \uac83\ucc98\ub7fc, \uac1c\ubc1c\uc6a9 \ucef4\ud4e8\ud130\uc5d0 Flutter\ub97c \uc124\uce58\ud574\uc57c \ud569\ub2c8\ub2e4. Flutter \uacf5\uc2dd \ud648\ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud558\uc5ec, \uac00\uc774\ub4dc\ub77c\uc778\uc5d0 \ub530\ub77c\uc11c Flutter\ub97c \uc124\uce58\ud558\uace0 \ud658\uacbd\uc744 \uc124\uc815\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4. \ubcf8 \uc5f0\uc7ac \uae00\uc744 \ub530\ub77c\uac00\uae30 \uc704\ud574\uc11c\ub294 \uacf5\uc2dd \ud648\ud398\uc774\uc9c0\uc758 &#8220;Get started&#8221; \uc808\ucc28\uc5d0\uc11c \ub2e4\uc74c\uc758 \ub2e8\uacc4\ub294 \ubc18\ub4dc\uc2dc \uc77d\uace0 \uc774\ud574\ud55c \ud6c4, \uc644\ub8cc\ud574 \uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ol><li>Install : Flutter \uad6c\ub3d9\uc744 \uc704\ud55c \uac1c\ubc1c \ud658\uacbd \uc124\uc815, Flutter SDK \uc124\uce58 \ubc0f \ud658\uacbd \uc124\uc815, iOS \ud639\uc740 Android \uac1c\ubc1c \ud658\uacbd \uc124\uc815 (\ubcf8 \uae00\uc5d0\uc11c\ub294 \uac1c\ubc1c\uc790 \ud658\uacbd\uc740 MacOS\uc774\uba70, iOS\ub97c \uc704\ud55c Xcode\uc640 Android\ub97c \uc704\ud55c Android Studio\ub97c \ubaa8\ub450 \uc124\uce58\ud558\uc600\uc2b5\ub2c8\ub2e4)<\/li><li>Set up an editor : \uac1c\ubc1c\uc6a9 Editor \uc124\uc815 (\ubcf8 \uae00\uc5d0\uc11c\ub294 Dart\uc5d0\uc11c \uc0ac\uc6a9\ud55c MS Visual Code\ub97c \uadf8\ub300\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4)<\/li><li>Test drive : \uac1c\ubc1c\uc6a9 Editor\ub97c \uc0ac\uc6a9\ud558\uc5ec, Flutter\uac00 \uc81c\uacf5\ud558\ub294 \uae30\ubcf8 \ud504\ub85c\uadf8\ub7a8\uc778 Start App\uc744 \uc2e4\ud589\ud558\uace0, hot reload\ub97c \uacbd\ud5d8\ud569\ub2c8\ub2e4 (\ubcf8 \uae00\uc5d0\uc11c\ub294 Dart\uc5d0\uc11c \uc0ac\uc6a9\ud55c MS Visual Code\ub97c \uadf8\ub300\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4)<\/li><\/ol>\n\n\n\n<p>\ubcf8 \uae00\uc5d0\uc11c\ub294 \uc774\uc81c \ub3c5\uc790\uac00 MS Visual Code\ub97c \uc0ac\uc6a9\ud558\uc5ec, Flutter\ub97c \ud1b5\ud55c \uc2e0\uaddc \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud558\uace0(3. Test drive\uc758 Create the app), \uc774\ub97c \uc2e4\uc81c \uae30\uae30(\ud734\ub300\ud3f0, \ud0dc\ube14\ub9bf \ub4f1) \ud639\uc740 Emulator\ub97c \ud1b5\ud574\uc11c \uc2e4\ud589\ud560 \uc218 \uc788\ub294 \uac83\uc73c\ub85c \uac00\uc815\ud558\uc5ec, \ub2e4\uc74c\uc758 \uae00\uc744 \uc774\uc5b4 \uac11\ub2c8\ub2e4. \ub530\ub77c\uc11c, \ubc18\ub4dc\uc2dc \uc55e\uc11c\uc758 3\ub2e8\uacc4\ub97c \uc218\ud589\ud558\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ubbf8 \uc55e\uc11c\uc758 Get started\uc758 3\ubc88\uc5d0\uc11c Flutter\uac00 \uc81c\uacf5\ud558\ub294 \uae30\ubcf8 Start App\uc744 \uc2e4\ud589\ud574 \ubcf4\uc558\uc9c0\ub9cc, \ubcf8 \uae00\uc5d0\uc11c\ub294 \ubcf4\ub2e4 \ub2e8\uc21c\ud55c \ud504\ub85c\uadf8\ub7a8\uc73c\ub85c \uc2dc\uc791\uc744 \ud558\ub824 \ud569\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574\uc11c Get started\uc758 3\ubc88\uc5d0\uc11c \ud55c \uac83\uacfc \uac19\uc774, \uc0c8\ub85c\uc6b4 \ud504\ub85c\uc81d\ud2b8\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. Visual Code\uc758 \uba85\ub839 \ud314\ub808\ud2b8\ub97c \uc5f4\uace0, &#8220;Flutter: New Project&#8221;\ub97c \ud1b5\ud574\uc11c, hello_world \ud504\ub85c\uc81d\ud2b8\ub97c \uc6d0\ud558\ub294 \uc7a5\uc18c\uc5d0 \uc0dd\uc131\ud569\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud558\uba74, Visual Code\uc5d0 HELLO_WORLD \uc774\ub984\uc758 \ud3f4\ub354\uac00 \uc0dd\uc131\ub418\uc5b4 \uc5f4\ub824 \uc788\ub294 \uac83\uc744 \ud655\uc778 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Flutter \uac1c\ubc1c\uc758 \uc2dc\uc791\uc5d0 \uc55e\uc11c\uc11c, \uac1c\ubc1c \ud658\uacbd\uc5d0 \ubb38\uc81c\uac00 \uc5c6\ub294\uc9c0\ub97c \ub9c8\uc9c0\ub9c9\uc73c\ub85c \ud655\uc778\ud558\uace0\uc790, \uc55e\uc11c Get started\uc5d0\uc11c\ub3c4 \uc18c\uac1c\ub41c, &#8220;flutter doctor&#8221;\ub97c \uc218\ud589\ud558\uc5ec, \uc774\uc288 \uc5c6\uc74c\uc744 \ud655\uc778\ud574 \ubd05\ub2c8\ub2e4. <\/p>\n\n\n\n<h4>Simple Hello World! Program<\/h4>\n\n\n\n<p>\uc0c8\ub85c \ub9cc\ub4e0 hello_world \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc6b0\ub9ac\uac00 \uc218\uc815\ud558\uace0\uc790 \ud558\ub294 \ud654\uc77c\uc740, \ud504\ub85c\uadf8\ub7a8 \uc218\ud589\uc758 \uac00\uc7a5 \uae30\ubcf8\uc774 \ub418\ub294 main.dart \ud654\uc77c \uc785\ub2c8\ub2e4. \uc774 \ud654\uc77c\uc548\uc5d0 main() \ud568\uc218\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud654\uc77c\uc740 \ud504\ub85c\uc81d\ud2b8 \ud3f4\ub354\uc548\uc758 lib \ub514\ub809\ud1a0\ub9ac\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud654\uc77c\uc744 \uc5f4\uace0, \uc774 \uc548\uc758 \ub0b4\uc6a9\uc744 \ub2e4\uc74c\uc758 dart_tutorial-31-01.dart \ud654\uc77c\uc758 \ub0b4\uc6a9\uc73c\ub85c \ubcc0\uacbd\ud569\ub2c8\ub2e4. \ucc38\uace0\ub85c main.dart \ud654\uc77c \ub0b4\uc6a9\uc744 \uc544\ub798 \ud654\uc77c\uc758 \ub0b4\uc6a9\uc73c\ub85c \ubcc0\uacbd\ud558\uba74, test \ub514\ub809\ud1a0\ub9ac\uc758 widget_test.dart \ud654\uc77c\uc5d0 \uc624\ub958\uac00 \uc788\ub294 \uac83\uc73c\ub85c \ub098\ud0c0\ub098\uc9c0\ub9cc, \uc77c\ub2e8 \ubb34\uc2dc\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ darttutorial-31-01.dart\n\nimport 'package:flutter\/material.dart'; \/\/ #1\n\nvoid main() { \/\/ #2\n  runApp( \/\/ #3\n    Center( \/\/ #4\n      child: Text( \/\/ #5\n        'Hello, World!', \n        textDirection: TextDirection.ltr,\n      ),\n    ),\n  );\n}<\/pre>\n\n\n\n<p>main.dart \ud654\uc77c\uc758 \ub0b4\uc6a9\uc744 \uc218\uc815\ud55c \ud6c4, \ub514\ubc84\uadf8 \ubaa8\ub4dc\uc5d0\uc11c \uc2e4\ud589\ud569\ub2c8\ub2e4. MacOS\uc5d0\uc11c ios simulator\ub97c \uc0ac\uc6a9\ud558\uc5ec iPhone 11 Pro Max\uc5d0\uc11c \uc2e4\ud589\ud55c \uacb0\uacfc \ud654\uba74\uc774 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/04\/Simulator-Screen-Shot-iPhone-11-Pro-Max-2020-04-04-at-17.14.28-473x1024.png\" alt=\"\" class=\"wp-image-829\" width=\"302\" height=\"654\" srcset=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/04\/Simulator-Screen-Shot-iPhone-11-Pro-Max-2020-04-04-at-17.14.28-473x1024.png 473w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/04\/Simulator-Screen-Shot-iPhone-11-Pro-Max-2020-04-04-at-17.14.28-139x300.png 139w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/04\/Simulator-Screen-Shot-iPhone-11-Pro-Max-2020-04-04-at-17.14.28-768x1662.png 768w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/04\/Simulator-Screen-Shot-iPhone-11-Pro-Max-2020-04-04-at-17.14.28-480x1039.png 480w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/04\/Simulator-Screen-Shot-iPhone-11-Pro-Max-2020-04-04-at-17.14.28.png 1242w\" sizes=\"(max-width: 302px) 100vw, 302px\" \/><figcaption>[\uadf8\ub9bc] Hello World! \ud504\ub85c\uc81d\ud2b8 \uc2e4\ud589 \ud654\uba74<\/figcaption><\/figure><\/div>\n\n\n\n<p>\ud504\ub85c\uadf8\ub7a8\uc744 \ud55c\uc904 \ud55c\uc904 \uc124\uba85 \ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>#1: Flutter\uac00 \uc81c\uacf5\ud558\ub294 material \ud0c0\uc785\uc758 GUI \ud328\ud0a4\uc9c0\ub97c \ud3ec\ud568\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>#2: Flutter \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uac00\uc7a5 \uba3c\uc800 \uc2e4\ud589\uc774 \ub418\ub294 main() \uad6c\ubb38\uc758 \uc2dc\uc791\uc785\ub2c8\ub2e4. <\/p>\n\n\n\n<p>#3: runApp() \ud568\uc218\ub294 Flutter\uc758 main() \ud568\uc218\uc640 \uac19\uc740 \uc874\uc7ac \uc785\ub2c8\ub2e4. \uc55e\uc11c\uc758 \uae00\uc5d0\uc11c Flutter\ub294 \ubaa8\ub4e0 \uac83\uc774 Widget\uc73c\ub85c \uc774\ub8e8\uc5b4 \uc9c4\ub2e4\uace0 \uc774\uc57c\uae30 \ud588\ub294\ub370, \uc774 \ud568\uc218\ub294 \uc8fc\uc5b4\uc9c4 widget\uc744 GUI \ud654\uba74\uc5d0 \uc5f0\uacb0\ud558\ub294 \uc791\uc5c5\uc744 \ud569\ub2c8\ub2e4. \uc8fc\uc5b4\uc9c4 widget\uc740 \uc804\uccb4 \ud654\uba74\uc744 \ucc44\uc6b0\ub294 GUI\uc758 \ub808\uc774\uc544\uc6c3\uc5d0 \ub300\ud55c \uc870\uac74\uc744 \uc81c\uacf5 \ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \ub9cc\uc57d widget\uc744 \uc911\uc559\uc5d0 \uc704\uce58\ud558\uace0 \uc2f6\ub2e4\uba74, Center widget\uc744 \uc0ac\uc6a9\ud558\uace0, \ub9cc\uc57d \ud654\uba74\uc758 \ud55c\ucabd\uc5d0 \uc815\ub82c\ud558\uace0 \uc2f6\ub2e4\uba74 Align widget\uc744 \uc0ac\uc6a9\ud558\ub294 \uc2dd\uc73c\ub85c \ud504\ub85c\uadf8\ub7a8\uc744 \uc791\uc131\ud569\ub2c8\ub2e4. (\ucc38\uc870: <a href=\"https:\/\/api.flutter.dev\/flutter\/widgets\/runApp.html\">https:\/\/api.flutter.dev\/flutter\/widgets\/runApp.html<\/a> )<\/p>\n\n\n\n<p>#4: runApp()\uc758 \uc785\ub825 \ud30c\ub77c\uba54\ud0c0\ub85c Center widget\uc744 \uc8fc\uc5c8\uc73c\ubbc0\ub85c, \uc55e\uc11c #3\uc758 \uc608\uc2dc\uc5d0\uc11c \uc124\uba85\ud55c \uac83\ucc98\ub7fc, GUI \ud654\uba74\uc758 \uc911\uc559\uc5d0 \ubb54\uac00\ub97c \ud45c\ud604 \ud558\uaca0\ub2e4\ub294 \uc758\ub3c4\uc785\ub2c8\ub2e4. Center class\ub294 \ubcf8\uc778\uc758 \uc790\uc2dd(child)\ub4e4\uc744 \ud654\uba74\uc758 \uc911\uc559\uc5d0 \uc758\uce58\uc2dc\ucf1c\uc11c \ub098\ud0c0\ub0c5\ub2c8\ub2e4. Flutter\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ub2e4\uc591\ud55c Class\uc640 Widget\ub4e4\uc740 \ub0b4\ubd80\uc5d0 \uc720\uc6a9\ud55c method \ubc0f property\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub4e4\uc5d0 \ub300\ud55c \uc138\ubd80\uc801\uc778 \uc815\ubcf4\ub294 <a href=\"https:\/\/api.flutter.dev\/\">https:\/\/api.flutter.dev\/<\/a> \uc0ac\uc774\ud2b8\uc5d0\uc11c \ud655\uc778 \uac00\ub2a5\ud569\ub2c8\ub2e4. (\ucc38\uc870: <a href=\"https:\/\/api.flutter.dev\/flutter\/widgets\/Center-class.html\">https:\/\/api.flutter.dev\/flutter\/widgets\/Center-class.html<\/a> )<\/p>\n\n\n\n<p>#5: \uc55e\uc11c #4\uc5d0\uc11c \uc911\uc559\uc5d0 \uc704\uce58\uc2dc\ud0a8 \uc815\ubcf4(Center class\uc758 child)\uac00 \ubb38\uc790\uc5f4\uc744 \ub098\ud0c0\ub0b4\ub294 Text class \uc784\uc744 \uc54c\uc218 \uc788\uc2b5\ub2c8\ub2e4. Text class\ub3c4 \uc720\uc6a9\ud55c method\uc640 property\ub97c \uc81c\uacf5\ud558\ub294\ub370, \uc608\uc81c\uc758 \uacbd\uc6b0\ub294 \ubb38\uc790\uc5f4 &#8220;Hello, World!&#8221;\ub97c \ub098\ud0c0\ub0b8\ub2e4\ub294 \uac83\uc744 \uc54c\uc218 \uc788\uc73c\uba70, \uc774\uc758 \ubc29\ud5a5(textDirection)\uc774 &#8220;left to right&#8221;\ub85c \uc815\ub82c(TextDirection.ltr) \ub418\ub3c4\ub85d \uc124\uc815\ud55c \uac83\uc744 \uc54c\uc218 \uc788\uc2b5\ub2c8\ub2e4. (\ucc38\uc870: <a href=\"https:\/\/api.flutter.dev\/flutter\/widgets\/Text-class.html\">https:\/\/api.flutter.dev\/flutter\/widgets\/Text-class.html<\/a> )<\/p>\n\n\n\n<h4>Advanced, But Still Simple Hello World! Program<\/h4>\n\n\n\n<p>Flutter\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 Start App \ubcf4\ub2e4 \ub354 \ub2e8\uc21c\ud55c \ud615\ud0dc\uc758 Hello World \ud504\ub85c\uadf8\ub7a8\uc744 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. Flutter\ub97c \uae30\ubc18\uc73c\ub85c\ud558\ub294 \ud504\ub85c\uadf8\ub7a8\uc740 \uc774\ub807\uac8c \uae00\uc790\ub9cc \ub098\ud0c0\ub0b4\uace0 \ub05d\ub0b4\uc9c0\ub294 \uc54a\uc73c\uba70, \ud654\uba74\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\uace0, \ub0b4\ubd80\uc5d0 \uc815\ubcf4\ub97c \uc800\uc7a5\/\uad00\ub9ac\ud574\uc57c \ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0, \uc55e\uc11c \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc73c\ub098 \ubb34\uc2dc\ud588\ub358 \ud654\uc77c\uc778 test\/widget_test.dart \uc548\uc73c\ub85c \ub4e4\uc5b4\uac00\uc11c, \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud55c \ubd80\ubd84\uc744 \ubcf4\uba74, main.dart\uc5d0 MyApp()\uc774\ub77c\ub294 \ud568\uc218\uac00 \uc5c6\uae30\uc5d0 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud55c \uac83\uc73c\ub85c \ub098\ud0c0\ub0a9\ub2c8\ub2e4. \ub530\ub77c\uc11c, \uc774 \uc5d0\ub7ec\ub97c \uc81c\uac70\ud568\uacfc \ub3d9\uc2dc\uc5d0 darttutorial-31-01.dart \ubcf4\ub2e4 \ub354 \ub9ce\uc740 \uae30\ub2a5\uc744 \ud22c\uc785\ud574\uc57c \uc81c\ub300\ub85c \ub41c \uac00\uc7a5 \uac04\ub2e8\ud55c \ud615\ud0dc\uc758 Hello World \ud504\ub85c\uadf8\ub7a8\uc744 \ub9cc\ub4e4\uc218 \uc788\ub294\ub370, \uc774\ub97c \ubc18\uc601\ud558\uc5ec darttutorial-31-01.dart\ub97c \uc77c\ubd80 \ud655\uc7a5\ud55c \ud504\ub85c\uadf8\ub7a8\uc774 darttutorial-31-02.dart \uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ darttutorial-30-02.dart\n\nimport 'package:flutter\/material.dart';\n\nvoid main() =&gt; runApp(MyApp()); \/\/ #1\n\nclass MyApp extends StatelessWidget { \/\/ #2\n  @override\n  Widget build(BuildContext context) { \/\/ #3\n    return Center(\n      child: Text(\n        'Hello, World!',\n        textDirection: TextDirection.ltr,\n      ),\n    );\n  }\n}<\/pre>\n\n\n\n<p>\uc55e\uc11c main.dart\uc758 \ub0b4\uc6a9\uc744 darttutorial-30-02.dart\uc758 \ub0b4\uc6a9\uc73c\ub85c \ubcc0\uacbd\ud569\ub2c8\ub2e4. \uc774\uc640 \ud568\uaed8 widget_test.dart\uc5d0\uc11c \ub098\ud0c0\ub0ac\ub358 \uc5d0\ub7ec\ub3c4 \uc0ac\ub77c\uc9c0\ub294 \uac83\uc744 \uc54c\uc218 \uc788\uc2b5\ub2c8\ub2e4. darttutorial-30-02.dart \ud504\ub85c\uadf8\ub7a8\uc5d0 \ub300\ud55c \uc124\uba85\uc744 darttutorial-30-01.dart \ub300\ube44 \ub2ec\ub77c\uc9c4 \ubd80\ubd84 \uc911\uc2ec\uc73c\ub85c \uc124\uba85 \ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>darttutorial-30-02.dart \ud504\ub85c\uadf8\ub7a8\uc758 #2\uc640 \uac19\uc774 MyApp class\ub97c \uc815\uc758\ud558\uace0, #1\uc5d0\uc11c \uc774\ub97c \uac1d\uccb4\ub85c \ub9cc\ub4e4\uc5b4\uc11c \uc2e4\ud589\ud588\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. Flutter \ud504\ub85c\uadf8\ub7a8\uc744 \ub9cc\ub4e4\ub54c, #1\uacfc #2\ub294 \ub9e4\uc6b0 \uc804\ud615\uc801\uc778 \uad6c\ubb38\uc785\ub2c8\ub2e4. MyApp class\ub294 StatelessWidget\ub97c \uae30\ubc18\uc73c\ub85c \ud655\uc7a5\ud558\uc600\uc2b5\ub2c8\ub2e4. StatelessWidget\ub294 \uc774\ud6c4\uc758 \uae00\uc5d0\uc11c \ub2e4\ub8e8\uaca0\uc9c0\ub9cc, \ub0b4\ubd80\uc801\uc73c\ub85c \uc9c0\uc18d\uc801\uc778 \uad00\ub9ac\ub97c \uc218\ud589\ud558\ub294 \ub370\uc774\ud0c0\uac00 \uc5c6\ub294 \uacbd\uc6b0(does not require mutable state)\uc5d0 \uc0ac\uc6a9\ud558\ub294 class \uc785\ub2c8\ub2e4. Flutter\ub294 \uc9c0\uc18d\uc801\uc778 \uad00\ub9ac\uac00 \ud544\uc694 \uc5c6\ub294 \uacbd\uc6b0\uc5d0, StatelessWidget \uc548\uc5d0 \ud544\uc694\ud55c widget\ub4e4\uc744 \ud3ec\ud568\uc2dc\ucf1c\uc11c GUI\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. (\ucc38\uc870: <a href=\"https:\/\/api.flutter.dev\/flutter\/widgets\/StatelessWidget-class.html\">https:\/\/api.flutter.dev\/flutter\/widgets\/StatelessWidget-class.html<\/a> )<\/p>\n\n\n\n<p>darttutorial-30-02.dart \ud504\ub85c\uadf8\ub7a8\uc758 #3\uc758 build method\ub294 StatelessWidget\uc758 \ub0b4\ubd80\uc5d0 \ud3ec\ud568\ub41c widget\ub4e4 \uc911\uc5d0 \ubcc0\ud654\uac00 \ubc1c\uc0dd\ud558\ub294 wudget(\ub4e4)\uc774 \uc788\uc744\ub54c, \ub2e4\uc2dc GUI\ub97c \uc5c5\ub370\uc774\ud2b8 \ud558\ub294 \uc6a9\ub3c4\ub85c \ud638\ucd9c\uc774 \ub418\ub294 method \uc785\ub2c8\ub2e4. \uc774\uc5d0 \ub300\ud55c \uc0c1\uc138\ud55c \uc124\uba85\uc740 \ucd94\ud6c4 \ub2e4\ub8f0 \uc608\uc815\uc785\ub2c8\ub2e4. (\ucc38\uc870: <a href=\"https:\/\/api.flutter.dev\/flutter\/widgets\/StatelessWidget\/build.html\">https:\/\/api.flutter.dev\/flutter\/widgets\/StatelessWidget\/build.html<\/a> ) build method \uc548\uc744 \ubcf4\uba74, \uc55e\uc11c\uc758 darttutorial-30-01.dart\uc5d0\uc11c \ud654\uba74\uc744 \ucc44\uc6b0\ub294\ub370 \uc0ac\uc6a9\ud55c Center class\uac00 \ub3d9\uc77c\ud558\uac8c Text class\ub97c \ud3ec\ud568\ud558\ub418, return \uad6c\ubb38\uc5d0 \uc758\ud558\uc5ec \ub9cc\ub4e4\uc5b4\uc9c0\uace0 \uc804\ub2ec\ub418\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc77c\ubc18\uc801\uc778 Flutter \ud504\ub85c\uadf8\ub7a8\uc740 darttutorial-30-02.dart\uacfc \uac19\uc774 main() \ud568\uc218\uc5d0\uc11c runApp \ud568\uc218\ub97c \ud1b5\ud558\uc5ec, MyApp\uacfc \uac19\uc778 StatelessWidget \ud639\uc740 \ucd94\ud6c4 \uc124\uba85\ud560 StatefulWidget \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uace0, \uc774 \uc548\uc5d0 GUI\ub85c \ud45c\uc2dc\ud558\uace0 \uc2f6\uc740 widget\ub4e4\uacfc \ub0b4\uc6a9\uc744 \ucc44\uc6b0\ub294 \ud615\ud0dc\ub85c \ub9cc\ub4e4\uc5b4 \uc9d1\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\uc81c darttutorial-30-02.dart \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud574 \ubd05\ub2c8\ub2e4. \uacb0\uacfc\ub294 \uc55e\uc11c\uc758 darttutorial-30-01.dart \uae30\ubc18\uc758 \ud504\ub85c\uadf8\ub7a8\uacfc \ub3d9\uc77c\ud55c \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h4>Hot-Reload based Debug<\/h4>\n\n\n\n<p>\uc55e\uc11c Flutter \uacf5\uc2dd \ud648\ud398\uc774\uc9c0\uc758 Get-started\ub97c \uc2e4\ud589\ud558\ub2e4\ubcf4\uba74 Hot Reload \ub77c\ub294 \uae30\ub2a5\uc744 \uc124\uba85\ud558\ub294 \ubd80\ubd84\uc774 \uc9e7\uac8c \ub098\ud0c0\ub098\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ub97c Hello World \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \ub2e4\uc2dc \uacbd\ud5d8\ud558\uae30 \uc704\ud558\uc5ec, \ud504\ub85c\uadf8\ub7a8\uc774 \ub514\ubc84\uadf8 \ubaa8\ub4dc\ub85c \uc2e4\ud589\uc911\uc778 \uc0c1\ud0dc\uc5d0\uc11c, Visual Code \ucc3d\uc758, darttutorial-30-02.dart \uae30\ubc18 main.dart\uc5d0\uc11c &#8220;Hello, World!&#8221; \ubb38\uc790\uc5f4\uc744 &#8220;Good-Bye, World!&#8221;\ub85c \ubc14\uafbc\ud6c4 \uc800\uc7a5\ud558\uae30\ub97c \uc2e4\ud589\ud558\uba74, \uc2e4\ud589\uc911\uc778 \ud504\ub85c\uadf8\ub7a8\uc758 \ubb38\uc790\uc5f4\uc774 \ubc14\ub00c\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 Hot Reload\ub77c\ub294 \uae30\ub2a5\uc73c\ub85c\uc11c, Flutter\ub85c \ub9cc\ub4e4\uc5b4\uc9c4 \ud504\ub85c\uadf8\ub7a8\uc740 \ub0b4\ubd80\uc801\uc73c\ub85c \uc9c1\uc811 \ud654\uba74\uc5d0 \uadf8\ub9bc\uc744 \uadf8\ub9ac\ub294 \ud615\ud0dc\ub85c \ub3d9\uc791\ud558\uae30\uc5d0 \uac00\ub2a5\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\uc774\uc640 \ubc18\ub300\ub85c \ub2e4\ub978 \ubaa8\ubc14\uc77c \uac1c\ubc1c \ubc29\ubc95 \ub3c4\uad6c\ub4e4\uc740 \ubaa8\ubc14\uc77c \uae30\uae30\uc758 \uae30\ub2a5\uc5d0 \ud654\uba74 \uc5c5\ub370\uc774\ud2b8\ub97c \uc758\ub8b0\ud558\ub294 \ubc29\uc2dd\uc774\uae30\uc5d0, \uc9c0\uae08\ucc98\ub7fc \ud654\uba74\uc5d0 \ub098\ud0c0\ub098\ub294 \ubb38\uc790\uc5f4\uc744 \ubc14\uafb8\uace0\uc790 \ud558\uba74, \ub514\ubc84\uadf8 \uc911\uc778 \ud504\ub85c\uadf8\ub7a8\uc758 \uc2e4\ud589\uc744 \uba48\ucd94\uace0, \ud504\ub85c\uadf8\ub7a8 \ucf54\ub4dc \uc218\uc815\ud6c4, \ub2e4\uc2dc \ube4c\ub4dc\ud55c \ud6c4, \uc774\ub97c \ub514\ubc84\uadf8 \ubaa8\ub4dc\ub85c \ub2e4\uc2dc \ub3d9\uc791\ud574\uc57c \ud569\ub2c8\ub2e4. \ub2f9\uc5f0\ud788 \uc774\ub97c \uc704\ud55c \uc2dc\uac04\uc774 \ub354 \ud544\uc694\ud558\uac8c \ub418\ub294\ub370, Flutter\ub294 \ub514\ubc84\uadf8 \ubaa8\ub4dc\ub85c \uc2e4\ud589\uc911\uc778 \ud504\ub85c\uadf8\ub7a8\uc758 \uc18c\uc2a4 \ucf54\ub4dc\ub97c \uc218\uc815\ud558\uba70, \ubc14\ub85c \ub514\ubc84\uadf8 \uc911\uc778 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ubc18\uc601\uc774 \ub418\ubbc0\ub85c, \ub514\ubc84\uadf8\ub97c \uc704\ud55c \uc2dc\uac04\uacfc \ub178\ub825\uc774 \ub9e4\uc6b0 \uc904\uc5b4\ub4dc\ub294 \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 Flutter\uc758 \ub9e4\uc6b0 \ud070 \uc7a5\uc810\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Flutter\uc758 Hot Reload\uac00 \uc5b4\ub5bb\uac8c \uae30\uc874\uc758 Native \ubc29\uc2dd, Web View \ubc29\uc2dd, Reactive \ubc29\uc2dd\uacfc \ub2e4\ub978\uc9c0\uc5d0 \ub300\ud574\uc11c\ub294 hackernoon\uc758 &#8220;What\u2019s Revolutionary about Flutter&#8221;\uc5d0 \uc798 \uc124\uba85\uc774 \ub418\uc5b4 \uc788\uc73c\ub2c8, \uad00\uc2ec\uc788\ub294 \uacbd\uc6b0\ub294 \ud55c\ubc88 \uc77d\uc5b4 \ubcf4\uae30\ub97c \uad8c\uc7a5\ud569\ub2c8\ub2e4. (\ucc38\uc870: <a href=\"https:\/\/hackernoon.com\/whats-revolutionary-about-flutter-946915b09514?ref=morioh.com\">https:\/\/hackernoon.com\/whats-revolutionary-about-flutter-946915b09514?ref=morioh.com<\/a> )<\/p>\n\n\n\n<h4>\ub9c8\ubb34\ub9ac<\/h4>\n\n\n\n<p>\ubcf8 \uae00\uc5d0\uc11c\ub294 Flutter\uc758 Start App \ubcf4\ub2e4 \ub354 \ub2e8\uc21c\ud55c \ud615\ud0dc\uc758 Hello World! \ud504\ub85c\uadf8\ub7a8\uc758 \ub450\uac00\uc9c0 \ubc84\uc804\uc744 \ud1b5\ud574\uc11c, \uac00\uc7a5 \uae30\ubcf8\uc801\uc73c\ub85c Flutter \uae30\ubc18 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uac00\uc838\uc57c \ud558\ub294 \uc694\uc18c\ub4e4\uc5d0 \ub300\ud574\uc11c \uc124\uba85\ud558\uc600\uc2b5\ub2c8\ub2e4. \ub610\ud55c, Flutter\uc758 \ub9e4\uc6b0 \ud070 \uc7a5\uc810 \uc911 \ud558\ub098\uc778 Hot Reload \ubc29\uc2dd\uc5d0 \ub300\ud574\uc11c \uc124\uba85\ud558\uc5ec, \uac1c\ubc1c\uc790\uac00 \uc5bc\ub9c8\ub098 \uac1c\ubc1c\uc5d0 \ud544\uc694\ud55c \uc2dc\uac04\uc744 \uc904 \uc77c\uc218 \uc788\ub294\uc9c0\ub97c \uc54c\uc544\ubcf4\uc558\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/01\/b05-1.jpg\" alt=\"\" class=\"wp-image-267\" width=\"137\" height=\"49\"\/><\/figure><\/div>\n\n\n\n<p>Creative Commons License (CC BY-NC-ND)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&lt; Flutter \ud65c\uc6a9\ud558\uae30 &#8211; Hello World! &gt; \uc55e\uc11c\uc5d0\uc11c Dart \uc5b8\uc5b4\ub97c \uc124\uce58\ud55c \uac83\ucc98\ub7fc, \uac1c\ubc1c\uc6a9 \ucef4\ud4e8\ud130\uc5d0 Flutter\ub97c \uc124\uce58\ud574\uc57c \ud569\ub2c8\ub2e4. Flutter \uacf5\uc2dd \ud648\ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud558\uc5ec, \uac00\uc774\ub4dc\ub77c\uc778\uc5d0 \ub530\ub77c\uc11c Flutter\ub97c \uc124\uce58\ud558\uace0 \ud658\uacbd\uc744 \uc124\uc815\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4. \ubcf8 \uc5f0\uc7ac &#8230;<\/p>\n","protected":false},"author":1,"featured_media":984,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[3],"tags":[13],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/817"}],"collection":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=817"}],"version-history":[{"count":18,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/817\/revisions"}],"predecessor-version":[{"id":1260,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/817\/revisions\/1260"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/media\/984"}],"wp:attachment":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=817"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}