{"id":1199,"date":"2020-10-14T13:09:00","date_gmt":"2020-10-14T04:09:00","guid":{"rendered":"http:\/\/mobilelab.khu.ac.kr\/?p=1199"},"modified":"2023-05-27T16:21:02","modified_gmt":"2023-05-27T07:21:02","slug":"dart-2-8-2020-05-06","status":"publish","type":"post","link":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/2020\/10\/14\/dart-2-8-2020-05-06\/","title":{"rendered":"Dart 2.8.1 @ 2020.05.06"},"content":{"rendered":"\n<p>Flutter\uc640 \ud568\uaed8 2020\ub144 \ucc98\uc74c\uc73c\ub85c Dart\uc758 \uacf5\uc2dd \ub9b4\ub9ac\uc988\ub3c4 \ubc1c\ud45c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. 2020\ub144 5\uc6d4 6\uc77c \ubc1c\ud45c\ub41c 2.8.1\uc5d0 \ubc18\uc601\ud55c \uc0ac\ud56d\uc740 GitHub\uc758 Dart SDK\uc5d0\uc11c \ud655\uc778 \uac00\ub2a5\ud569\ub2c8\ub2e4 (\ucc38\uc870: <a href=\"https:\/\/github.com\/dart-lang\/sdk\/blob\/master\/CHANGELOG.md#281---2020-05-06\">https:\/\/github.com\/dart-lang\/sdk\/blob\/master\/CHANGELOG.md#281&#8212;2020-05-06<\/a>). \uacf5\uc2dd \uc0ac\uc774\ud2b8\uc5d0\uc11c \uac15\uc870\ud55c 2.8.1\uc758 \uac00\uc7a5 \ud070 \ubcc0\ud654\ub294 non-nullable types\uc5d0 \ub300\ud574\uc11c \ud5a5\ud6c4 \ubc84\uc804\uc5d0 \uc788\uc744 \uc0ac\ud56d\uc5d0 \ub300\ud558\uc5ec \ubbf8\ub9ac \uc0ac\uc804 \uc900\ube44\ub97c \ud55c \uac83\uc774\ub77c\uace0 \ud569\ub2c8\ub2e4. \uc774\uc678\uc5d0\ub3c4 \uc8fc\uc694 \ucf54\uc5b4 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \ub300\ud55c \uac1c\uc120 \uc791\uc785\uc774 \uc774\ub8e8\uc5b4 \uc84c\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\uc774 \uae00\uc5d0\uc11c\ub294 Flutter\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c Michael Thomsen\uc758 &#8220;Announcing Dart 2.8&#8243;\uc758 \uc8fc\uc694 \ubd80\ubd84\uc744 \uc694\uc57d\ud558\uace0\uc790 \ud569\ub2c8\ub2e4 (\ucd9c\ucc98: <a href=\"https:\/\/medium.com\/dartlang\/announcing-dart-2-8-7750918db0a\">https:\/\/medium.com\/dartlang\/announcing-dart-2-8-7750918db0a<\/a>).<\/p>\n\n\n\n<h4 class=\"has-vivid-cyan-blue-color has-text-color\">Preparation for Null Safety<\/h4>\n\n\n\n<p>\ud504\ub85c\uadf8\ub7a8\uc758 \ubcc0\uc218\uac00 null \uac12\uc744 \uac00\uc9c4 \ub2e4\ub294 \uac83\uc740 \uc7a5\uc810\ub3c4 \uc788\uc9c0\ub9cc, \ub9e4\uc6b0 \ub9ce\uc740 \uc5d0\ub7ec\uc640 \ubc84\uadf8\uc758 \uc6d0\uc778\uc774 \ub418\uae30\ub3c4 \ud569\ub2c8\ub2e4. Dart \uc5b8\uc5b4\ub294 \uc774\ub7ec\ud55c null \uac12\uc744 \uac00\uc9c0\ub294 \uacbd\uc6b0\uc5d0 \ub300\ud55c \uc548\uc804\uc131\uc744 \uc81c\uacf5\ud558\uae30 \uc704\ud558\uc5ec \ub178\ub825\ud574 \uc654\uc2b5\ub2c8\ub2e4. null \uac12\uc744 \uac00\uc9c0\ub294 \uacbd\uc6b0\uc640 \uadf8\ub798\uc11c\ub294 \uc548\ub418\ub294 \uacbd\uc6b0\uc5d0 \ub300\ud55c \uad6c\ubd84\uc744 \ubc18\uc601\ud558\uae30 \uc704\ud558\uc5ec Dart\ub294 \uacc4\uc18d \uac1c\uc120 \uc911\uc774\uba70, \uc774\ub97c \ud1b5\ud574\uc11c \uc774\ub7f0 \ud0c0\uc785\uc758 \ubcc0\uc218\ub4e4\uc774 \uc548\uc815\uc801\uc73c\ub85c \ub3d9\uc791\ud558\uace0, null \uac12\uc774 \uc544\ub2cc \ubcc0\uc218\ub4e4\uc5d0 \ub300\ud55c \ucd5c\uc801\ud654\ub41c \ucf54\ub4dc \uc0dd\uc131 \ub4f1\uc758 \uc791\uc5c5\uc774 \uafb8\uc900\ud558\uac8c \uc774\ub8e8\uc5b4 \uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Null safety\ub97c \uac15\ud654\ud558\uae30 \uc704\ud558\uc5ec, Dart \uc5b8\uc5b4\uc640 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub4e4\uc5d0 \ud070 \ubcc0\ud654\uac00 \uc788\uc5c8\ub2e4\uace0 \ud569\ub2c8\ub2e4. dart:core, dart:async, dart:io\uc5d0 \uc911\uc810\uc801\uc73c\ub85c \ubcc0\ud654\uac00 \uc788\uc5c8\uc73c\uba70, \uc774\uc5d0 \ub300\ud574\uc11c\ub294 <a href=\"https:\/\/github.com\/dart-lang\/sdk\/issues\/40686\">https:\/\/github.com\/dart-lang\/sdk\/issues\/40686<\/a>\uc5d0\uc11c \ubcf4\ub2e4 \uad6c\uccb4\uc801\uc73c\ub85c \ud655\uc778\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h4 class=\"has-vivid-cyan-blue-color has-text-color\">Enhanced Package Ecosystem<\/h4>\n\n\n\n<p>\uac00\uc7a5 \uba3c\uc800 Dart\/Flutter\uc758 \ud328\ud0a4\uc9c0\ub97c \uad00\ub9ac\ud558\ub294 pub.dev \uc800\uc7a5\uc18c\uc758 \uc131\ub2a5 \uac1c\uc120\uc774 \uc774\ub8e8\uc5b4 \uc84c\ub2e4\uace0 \ud569\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574\uc11c <em>pub outdated<\/em> \uba85\ub839\uc774 \uc0c8\ub86d\uac8c \ub9cc\ub4e4\uc5b4 \uc84c\ub294\ub370, \uae30 \uac1c\ubc1c\ud55c \ud504\ub85c\uadf8\ub7a8\uc774 \uc0ac\uc6a9\ud558\ub294 \ud328\ud0a4\uc9c0\ub4e4\uc758 \uc758\uc874\uc131 \uc810\uac80 \ub4f1\uc744 \ud6a8\uacfc\uc801\uc73c\ub85c \uc9c4\ud589\ud558\uace0, \uc5c5\ub370\uc774\ud2b8\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 package \ub4e4\uacfc \uc774\ub4e4\uc758 \uc758\uc874 \uad00\uacc4\ub97c \uc815\uc758\ud55c pubspec.yaml \ud654\uc77c\uc744 \ud504\ub85c\uadf8\ub798\uba38\uac00 \ub9cc\ub4e0\ud6c4, <em>pub get<\/em>\uc744 \uc2e4\ud589\ud558\uba74 puspec.lock \ud654\uc77c\uc774 \uc0dd\uc131 \ub429\ub2c8\ub2e4. \uc774\uc804\uc758 \ubb38\uc81c\ub294, \uc774\ud6c4 <em>pub upgrade<\/em>\ub97c \ud558\ub354\ub77c\ub3c4 major \ubc84\uc804\uc758 \uc5c5\uadf8\ub808\uc774\ub4dc\ub294 \uc774\ub8e8\uc5b4\uc9c0\uc9c0 \uc54a\ub294\ub2e4\ub294 \uc810 \uc785\ub2c8\ub2e4. \uc774 \ubd80\ubd84\uc5d0 \ub300\ud574\uc11c <em>pub outdated<\/em>\ub294 minor \ubc84\uc804\uc758 \uc5c5\uadf8\ub808\uc774\ub4dc \uac00\ub2a5\uc131\uc5d0 \ub300\ud55c \ubd84\uc11d\uacfc \ud568\uaed8 pubspec.yaml \ud654\uc77c\uc758 \uc218\uc815\uc5d0 \ub300\ud55c guideline\uc744 \uc81c\uacf5\ud558\uc5ec major \ubc84\uc804\uc73c\ub85c\uc758 \uc548\uc815\uc801\uc778 \uc5c5\uadf8\ub808\uc774\ub4dc\uc5d0 \ub300\ud55c \uac00\uc774\ub4dc\ub77c\uc778\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc608\ub97c \ub4e4\uc5b4, \uc544\ub798\uc758 \uadf8\ub9bc\uc758 \uacbd\uc6b0, pubspec.yaml\uc5d0 foo\ub294 1.3.0\uc73c\ub85c, bar\ub294 2.0.1\ub85c \ub418\uc5b4 \uc788\ub294 \uacbd\uc6b0\uc785\ub2c8\ub2e4. <em>pub upgrade<\/em>\ub97c \ud1b5\ud574\uc11c \uc5c5\uadf8\ub808\uc774\ub4dc\uac00 \uac00\ub2a5\ud55c \ubc84\uc804\uc740 \uac01\uac01 1.3.1\uacfc 2.1.0\uc785\ub2c8\ub2e4. \ud558\uc9c0\ub9cc, bar\uc758 \uacbd\uc6b0 3.0.3\uc758 \ubc84\uc804\uc774 \uac00\uc6a9\ud55c \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uacbd\uc6b0 pubspec.yaml\uc758 dependencies\ub97c ^3.0.3\uc73c\ub85c \ubcc0\uacbd \ud558\uace0, <em>pub upgrade<\/em>\ub97c \uc218\ud589\ud558\uc5ec, \ucd5c\uc2e0 \ubc84\uc804\uc73c\ub85c\uc758 \uc5c5\uadf8\ub808\uc774\ub4dc \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"672\" height=\"310\" src=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/05\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-05-10-\u110b\u1169\u1112\u116e-1.57.53.png\" alt=\"\" class=\"wp-image-1204\" srcset=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/05\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-05-10-\u110b\u1169\u1112\u116e-1.57.53.png 672w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/05\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-05-10-\u110b\u1169\u1112\u116e-1.57.53-300x138.png 300w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/05\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-05-10-\u110b\u1169\u1112\u116e-1.57.53-480x221.png 480w\" sizes=\"(max-width: 672px) 100vw, 672px\" \/><figcaption>[\ucd9c\ucc98] <a href=\"https:\/\/medium.com\/dartlang\/announcing-dart-2-8-7750918db0a\">https:\/\/medium.com\/dartlang\/announcing-dart-2-8-7750918db0a<\/a><\/figcaption><\/figure>\n\n\n\n<p><em>pub get<\/em> \uba85\ub839\uc5d0 \ub300\ud574\uc11c\ub294 \ubcd1\ub82c\ub85c fetch \ud558\ub294 \uae30\ub2a5\uc774 \ucd94\uac00\ub418\uc5b4 \uc131\ub2a5 \uac1c\uc120\uc774 \uc774\ub8e8\uc5b4 \uc84c\uc2b5\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574\uc11c, <em>flutter create<\/em> \ud6c4\uc5d0 \uc2e4\ud589\ud558\ub294 \uc2e4\uc2dc\ud55c <em>flutter pub get<\/em>\uc758 \uc18d\ub3c4\uac00, Flutter 1.12 (Dart 2.7)\uc5d0\uc11c\ub294 6.5\ucd08\uac00 \uac78\ub9ac\ub294 \uacbd\uc6b0\uc5d0 \ub300\ud574\uc11c, Flutter 1.17 (Dart 2.8)\uc5d0\uc11c\ub294 2.5\ucd08\ub85c \uc904\uc5b4 \ub4e4\uc5c8\ub2e4\uace0 \ud569\ub2c8\ub2e4. Flutter\uac00 \uc81c\uacf5\ud558\ub294 Flutter gallery \ud504\ub85c\uadf8\ub7a8\uc758 \uacbd\uc6b0\ub3c4 \uac19\uc740 \uc791\uc5c5\uc5d0 15\ucd08\uac00 \uac78\ub838\uc9c0\ub9cc, \uc774\ubc88 \ub9b4\ub9ac\uc988\uc5d0\uc11c\ub294 3\ucd08\ub85c \uc904\uc5b4 \ub4e4\uc5c8\ub2e4\uace0 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h4 class=\"has-vivid-cyan-blue-color has-text-color\">\ub9c8\ubb34\ub9ac<\/h4>\n\n\n\n<p>Flutter 1.17.0\uc5d0 \uc774\uc5b4\uc11c Dart 2.8.1 \ub9b4\ub9ac\uc988\uc5d0 \ub300\ud574\uc11c \uc0b4\ud3b4 \ubcf4\uc558\uc2b5\ub2c8\ub2e4. Flutter\uc758 \uacbd\uc6b0\ub294 UI\/UX\uc5d0 \ub300\ud55c \ubd80\ubd84\uc774 \uc2dc\uc120\uc744 \ub04c\uae30\uc5d0 \uadf8\ub7f0 \ubd80\ubd84\uc5d0 \ub300\ud55c \uac1c\uc120\uc774 \ud655\uc2e4\ud558\uac8c \ubcf4\uc774\uc9c0\ub9cc, Dart \uc5b8\uc5b4\ub294 \uc5b8\uc5b4 \uc790\uccb4\uc758 \uc548\uc804\uc131\uacfc \uc774\ub97c \ub458\ub7ec\uc2fc \ucf54\uc5b4 \ub3c4\uad6c\ub4e4\uc758 \uac1c\uc120\uc774 \uc911\uc810\uc801\uc73c\ub85c \uc774\ub8e8\uc5b4 \uc9c0\uace0 \uc788\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\ub4ef 1\ub144\uc5d0 2~3\ud68c\uc5d0 \uc774\ub8e8\uc5b4 \uc9c0\ub294 \ub9b4\ub9ac\uc988\ub97c \uc9c0\uc18d\uc801\uc73c\ub85c \uc0b4\ud3b4\ubcf4\uba74, \uc5b4\ub290 \uc21c\uac04 Dart\/Flutter\uc758 \uc131\uc7a5\uacfc \ud568\uaed8 \ubc1c\uc804\ud558\ub294 \uac1c\ubc1c\uc790\ub85c\uc11c\uc758 \uc790\uc2e0\uc744 \ubc1c\uacac\ud560 \uac83 \uac19\uc2b5\ub2c8\ub2e4. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Flutter\uc640 \ud568\uaed8 2020\ub144 \ucc98\uc74c\uc73c\ub85c Dart\uc758 \uacf5\uc2dd \ub9b4\ub9ac\uc988\ub3c4 \ubc1c\ud45c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. 2020\ub144 5\uc6d4 6\uc77c \ubc1c\ud45c\ub41c 2.8.1\uc5d0 \ubc18\uc601\ud55c \uc0ac\ud56d\uc740 GitHub\uc758 Dart SDK\uc5d0\uc11c \ud655\uc778 \uac00\ub2a5\ud569\ub2c8\ub2e4 (\ucc38\uc870: https:\/\/github.com\/dart-lang\/sdk\/blob\/master\/CHANGELOG.md#281&#8212;2020-05-06). \uacf5\uc2dd \uc0ac\uc774\ud2b8\uc5d0\uc11c \uac15\uc870\ud55c 2.8.1\uc758 \uac00\uc7a5 \ud070 \ubcc0\ud654\ub294 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":1748,"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":[],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1199"}],"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=1199"}],"version-history":[{"count":2,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1199\/revisions"}],"predecessor-version":[{"id":1205,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1199\/revisions\/1205"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/media\/1748"}],"wp:attachment":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=1199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=1199"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=1199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}