{"id":85061,"date":"2025-03-25T11:31:50","date_gmt":"2025-03-25T04:31:50","guid":{"rendered":"https:\/\/itviecblog.uptech.vn\/?p=85061"},"modified":"2025-06-17T15:19:15","modified_gmt":"2025-06-17T08:19:15","slug":"dart-la-gi","status":"publish","type":"post","link":"https:\/\/itviec.com\/blog\/dart-la-gi\/","title":{"rendered":"Dart l\u00e0 g\u00ec? C\u00fa ph\u00e1p, \u0110\u1eb7c \u0111i\u1ec3m, \u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed9i dung b\u00e0i vi\u1ebft<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/#Dart_la_gi\" >Dart l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/#Cac_cu_phap_lap_trinh_Dart_co_ban\" >C\u00e1c c\u00fa ph\u00e1p l\u1eadp tr\u00ecnh Dart c\u01a1 b\u1ea3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/#Dac_diem_noi_bat_cua_Dart\" >\u0110\u1eb7c \u0111i\u1ec3m n\u1ed5i b\u1eadt c\u1ee7a Dart<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/#Uu_diem_va_nhuoc_diem_cua_Dart_la_gi\" >\u01afu \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a Dart l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/#So_sanh_Dart_voi_cac_ngon_ngu_lap_trinh_khac\" >So s\u00e1nh Dart v\u1edbi c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh kh\u00e1c\u00a0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/#Ung_dung_thuc_te_cua_Dart\" >\u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/#Cac_tinh_nang_moi_cua_Dart_2025\" >C\u00e1c t\u00ednh n\u0103ng m\u1edbi c\u1ee7a Dart 2025<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/#Cac_cong_dong_Dart_Flutter_pho_bien\" >C\u00e1c c\u1ed9ng \u0111\u1ed3ng Dart &amp; Flutter ph\u1ed5 bi\u1ebfn<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/#Cac_cau_hoi_thuong_gap_ve_Dart_la_gi\" >C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Dart l\u00e0 g\u00ec<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/#Tong_ket_Dart_la_gi\" >T\u1ed5ng k\u1ebft Dart l\u00e0 g\u00ec<\/a><\/li><\/ul><\/nav><\/div>\n<p><strong><em>Dart l\u00e0 ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh hi\u1ec7n \u0111\u1ea1i do Google ph\u00e1t tri\u1ec3n, \u0111\u01b0\u1ee3c xem l\u00e0 &#8220;tr\u00e1i tim&#8221; c\u1ee7a Flutter \u2013 framework ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng \u0111a n\u1ec1n t\u1ea3ng \u0111\u00ecnh \u0111\u00e1m hi\u1ec7n nay. C\u00f9ng kh\u00e1m ph\u00e1 Dart l\u00e0 g\u00ec c\u00f9ng nh\u1eefng t\u00ednh n\u0103ng n\u1ed5i b\u1eadt, hi\u1ec1u r\u00f5 v\u1ec1 c\u00fa ph\u00e1p v\u00e0 c\u00e1c \u1ee9ng d\u1ee5ng th\u1ef1c ti\u1ec5n c\u1ee7a Dart trong b\u00e0i vi\u1ebft d\u01b0\u1edbi \u0111\u00e2y!<\/em><\/strong><\/p>\n<p><span style=\"font-weight: 400;\">\u0110\u1ecdc b\u00e0i vi\u1ebft n\u00e0y \u0111\u1ec3 bi\u1ebft th\u00eam chi ti\u1ebft v\u1ec1:<\/span><\/p>\n<ul>\n<li aria-level=\"1\">Dart l\u00e0 g\u00ec<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">C\u00e1c c\u00fa ph\u00e1p l\u1eadp tr\u00ecnh Dart c\u01a1 b\u1ea3n\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">\u0110\u1eb7c \u0111i\u1ec3m n\u1ed5i b\u1eadt v\u00e0 \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">\u01afu \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a Dart<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">So s\u00e1nh Dart v\u1edbi c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh kh\u00e1c<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">C\u00e1c t\u00ednh n\u0103ng m\u1edbi nh\u1ea5t c\u1ee7a Dart 2025<\/span><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Dart_la_gi\"><\/span><b>Dart l\u00e0 g\u00ec?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Dart l\u00e0 m\u1ed9t ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh \u0111a n\u1ec1n t\u1ea3ng, hi\u1ec7n \u0111\u1ea1i v\u00e0 m\u1ea1nh m\u1ebd do Google ph\u00e1t tri\u1ec3n. Ng\u00f4n ng\u1eef n\u00e0y \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 x\u00e2y d\u1ef1ng c\u00e1c \u1ee9ng d\u1ee5ng hi\u1ec7u su\u1ea5t cao tr\u00ean web, di \u0111\u1ed9ng v\u00e0 m\u00e1y t\u00ednh \u0111\u1ec3 b\u00e0n.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dart n\u1ed5i b\u1eadt v\u1edbi c\u00fa ph\u00e1p \u0111\u01a1n gi\u1ea3n, d\u1ec5 \u0111\u1ecdc, c\u00f9ng kh\u1ea3 n\u0103ng bi\u00ean d\u1ecbch linh ho\u1ea1t sang m\u00e3 m\u00e1y ho\u1eb7c <a href=\"\/blog\/javascript-la-gi\/\" target=\"_blank\" rel=\"noopener\"><strong>JavaScript<\/strong><\/a>, gi\u00fap t\u0103ng hi\u1ec7u su\u1ea5t v\u00e0 t\u1ed1i \u01b0u h\u00f3a tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng. Ng\u00f4n ng\u1eef n\u00e0y \u0111\u1eb7c bi\u1ec7t ph\u1ed5 bi\u1ebfn trong c\u1ed9ng \u0111\u1ed3ng ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng nh\u1edd s\u1ef1 t\u00edch h\u1ee3p ch\u1eb7t ch\u1ebd v\u1edbi <a href=\"\/blog\/flutter-la-gi\/\" target=\"_blank\" rel=\"noopener\"><strong>Flutter<\/strong><\/a> \u2013 m\u1ed9t framework n\u1ed5i ti\u1ebfng trong vi\u1ec7c ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng di \u0111\u1ed9ng \u0111a n\u1ec1n t\u1ea3ng.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nh\u1edd t\u00ednh linh ho\u1ea1t v\u00e0 hi\u1ec7u su\u1ea5t cao, Dart ng\u00e0y c\u00e0ng \u0111\u01b0\u1ee3c c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean l\u1ef1a ch\u1ecdn trong c\u00e1c d\u1ef1 \u00e1n ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng hi\u1ec7n \u0111\u1ea1i.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cac_cu_phap_lap_trinh_Dart_co_ban\"><\/span><b>C\u00e1c c\u00fa ph\u00e1p l\u1eadp tr\u00ecnh Dart c\u01a1 b\u1ea3n<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Dart c\u00f3 c\u00fa ph\u00e1p \u0111\u01a1n gi\u1ea3n, d\u1ec5 \u0111\u1ecdc v\u00e0 t\u01b0\u01a1ng t\u1ef1 nhi\u1ec1u ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh ph\u1ed5 bi\u1ebfn nh\u01b0 Java, C++ hay JavaScript, gi\u00fap c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean d\u1ec5 d\u00e0ng l\u00e0m quen. C\u00fa ph\u00e1p Dart bao g\u1ed3m c\u00e1c th\u00e0nh ph\u1ea7n c\u01a1 b\u1ea3n nh\u01b0 khai b\u00e1o bi\u1ebfn, ki\u1ec3u d\u1eef li\u1ec7u, c\u00e2u l\u1ec7nh \u0111i\u1ec1u ki\u1ec7n, v\u00f2ng l\u1eb7p v\u00e0 h\u00e0m.<\/span><\/p>\n<h3><b>Bi\u1ebfn v\u00e0 ki\u1ec3u d\u1eef li\u1ec7u<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart h\u1ed7 tr\u1ee3 nhi\u1ec1u ki\u1ec3u d\u1eef li\u1ec7u nh\u01b0 <\/span><span style=\"font-weight: 400;\">int<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">double<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">String<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">bool<\/span><span style=\"font-weight: 400;\">, v\u00e0 c\u00e1c ki\u1ec3u ph\u1ee9c t\u1ea1p nh\u01b0 <\/span><span style=\"font-weight: 400;\">List<\/span><span style=\"font-weight: 400;\"> v\u00e0 <\/span><span style=\"font-weight: 400;\">Map<\/span><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">int age = 25;\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">double price = 19.99;\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">String name = 'Dart';\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">bool isActive = true;\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">List&lt;int&gt; numbers = [1, 2, 3];\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">Map&lt;String, String&gt; user = {'name': 'name', 'email': 'name@example.com'};\u00a0\u00a0<\/span><\/pre>\n<h3><b>H\u00e0m v\u00e0 l\u1edbp<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart l\u00e0 ng\u00f4n ng\u1eef h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng, cho ph\u00e9p \u0111\u1ecbnh ngh\u0129a h\u00e0m v\u00e0 l\u1edbp d\u1ec5 d\u00e0ng.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: \u0110o\u1ea1n m\u00e3 d\u01b0\u1edbi \u0111\u00e2y minh h\u1ecda c\u00e1ch bi\u1ec3u di\u1ec5n v\u00e0 khai b\u00e1o m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng trong Dart v\u00e0 c\u00e1ch truy c\u1eadp c\u00e1c ph\u01b0\u01a1ng th\u1ee9c c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u00f3.<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">class Person {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0String name;\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\"> \u00a0Person(this.name);\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\"> \u00a0void greet() {\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0print('Hello, $name');\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\"> \u00a0}\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">}\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">void main() {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0var person = Person('Alice');\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\"> \u00a0person.greet();\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">}\u00a0 <\/span><\/pre>\n<p><span style=\"font-weight: 400;\">H\u00e0m trong Dart c\u00f3 th\u1ec3 c\u00f3 tham s\u1ed1 v\u00e0 gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1. V\u00ed d\u1ee5:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">double add(double a, double b) {<\/span>\n<span style=\"font-weight: 400;\"> \u00a0return a + b;<\/span>\n<span style=\"font-weight: 400;\">}<\/span>\n\n<span style=\"font-weight: 400;\">void main() {<\/span>\n<span style=\"font-weight: 400;\"> \u00a0print(add(2.5, 3.5));<\/span>\n<span style=\"font-weight: 400;\">}<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">H\u00e0m <\/span><span style=\"font-weight: 400;\">add<\/span><span style=\"font-weight: 400;\"> \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a v\u1edbi hai tham s\u1ed1 ki\u1ec3u <\/span><span style=\"font-weight: 400;\">double<\/span><span style=\"font-weight: 400;\">. C\u00fa ph\u00e1p <\/span><span style=\"font-weight: 400;\">return a + b;<\/span><span style=\"font-weight: 400;\"> tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3 c\u1ee7a ph\u00e9p c\u1ed9ng hai tham s\u1ed1. Vi\u1ec7c s\u1eed d\u1ee5ng ki\u1ec3u <\/span><span style=\"font-weight: 400;\">double<\/span><span style=\"font-weight: 400;\"> gi\u00fap \u0111\u1ea3m b\u1ea3o h\u00e0m c\u00f3 th\u1ec3 x\u1eed l\u00fd c\u00e1c gi\u00e1 tr\u1ecb th\u1eadp ph\u00e2n. H\u00e0m n\u00e0y \u0111\u01b0\u1ee3c g\u1ecdi trong h\u00e0m <\/span><span style=\"font-weight: 400;\">main()<\/span><span style=\"font-weight: 400;\"> v\u00e0 in ra k\u1ebft qu\u1ea3 th\u00f4ng qua c\u00e2u l\u1ec7nh <\/span><span style=\"font-weight: 400;\">print()<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><b>To\u00e1n t\u1eed<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart h\u1ed7 tr\u1ee3 c\u00e1c to\u00e1n t\u1eed s\u1ed1 h\u1ecdc, logic v\u00e0 so s\u00e1nh nh\u01b0 <\/span><span style=\"font-weight: 400;\">+<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">&#8211;<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">&amp;&amp;<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">||<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">==<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">!=<\/span><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">int a = 10;\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">int b = 20;\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">print(a + b); \/\/ 30\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">print(a == b); \/\/ false\u00a0\u00a0<\/span><\/pre>\n<h3><b>C\u1ea5u tr\u00fac \u0111i\u1ec1u khi\u1ec3n<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Bao g\u1ed3m c\u00e1c c\u00e2u l\u1ec7nh \u0111i\u1ec1u ki\u1ec7n nh\u01b0 <\/span><span style=\"font-weight: 400;\">if<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">else<\/span><span style=\"font-weight: 400;\">, v\u00e0 v\u00f2ng l\u1eb7p nh\u01b0 <\/span><span style=\"font-weight: 400;\">for<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">while<\/span><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">for (int i = 0; i &lt; 5; i++) {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0print(i);\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">} <\/span>\n\n<span style=\"font-weight: 400;\">int j = 0;\u00a0 <\/span>\n<span style=\"font-weight: 400;\">while (j &lt; 3) {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0print(j);\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\"> \u00a0j++;\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">}\u00a0 <\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Ngo\u00e0i c\u00e1c th\u00e0nh ph\u1ea7n c\u01a1 b\u1ea3n, c\u00fa ph\u00e1p Dart c\u00f2n c\u00f3 nhi\u1ec1u t\u00ednh n\u0103ng quan tr\u1ecdng kh\u00e1c:<\/span><b><\/b><\/p>\n<h3><b>Collections (Danh s\u00e1ch, T\u1eadp h\u1ee3p, B\u1ea3n \u0111\u1ed3)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart cung c\u1ea5p c\u00e1c c\u1ea5u tr\u00fac d\u1eef li\u1ec7u nh\u01b0 <\/span><b>List (danh s\u00e1ch), Set (t\u1eadp h\u1ee3p), Map (b\u1ea3n \u0111\u1ed3)<\/b><span style=\"font-weight: 400;\"> \u0111\u1ec3 l\u01b0u tr\u1eef v\u00e0 x\u1eed l\u00fd d\u1eef li\u1ec7u linh ho\u1ea1t.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">List&lt;int&gt; ages = [25, 30, 35, 40];\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">Set&lt;String&gt; colors = {'Red', 'Green', 'Blue', 'Red'};\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">Map&lt;String, String&gt; countries = {'VN': 'Vietnam', 'US': 'United States', 'JP': 'Japan'};\u00a0\u00a0<\/span><b><\/b><\/pre>\n<h3><b>Null Safety (An to\u00e0n null)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart h\u1ed7 tr\u1ee3 null safety, gi\u00fap tr\u00e1nh l\u1ed7i null b\u1eb1ng c\u00e1ch y\u00eau c\u1ea7u khai b\u00e1o r\u00f5 r\u00e0ng \u0111\u1ed1i v\u1edbi bi\u1ebfn c\u00f3 th\u1ec3 null.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">String? nullableName; \/\/ C\u00f3 th\u1ec3 null\u00a0 <\/span>\n<span style=\"font-weight: 400;\">nullableName = 'Dart';<\/span><span style=\"font-weight: 400;\">\u00a0\u00a0<\/span><b><\/b><\/pre>\n<h3><b>Async &#8211; Await (L\u1eadp tr\u00ecnh b\u1ea5t \u0111\u1ed3ng b\u1ed9)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart h\u1ed7 tr\u1ee3 l\u1eadp tr\u00ecnh b\u1ea5t \u0111\u1ed3ng b\u1ed9, gi\u00fap x\u1eed l\u00fd c\u00e1c t\u00e1c v\u1ee5 nh\u01b0 t\u1ea3i d\u1eef li\u1ec7u t\u1eeb m\u1ea1ng ho\u1eb7c \u0111\u1ecdc file m\u00e0 kh\u00f4ng l\u00e0m ch\u1eadm \u1ee9ng d\u1ee5ng.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">Future&lt;void&gt; fetchData() async {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0await Future.delayed(Duration(seconds: 2));\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\"> \u00a0print('Data loaded');\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">}\u00a0 <\/span><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Dac_diem_noi_bat_cua_Dart\"><\/span><b>\u0110\u1eb7c \u0111i\u1ec3m n\u1ed5i b\u1eadt c\u1ee7a Dart<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-85063 size-full\" src=\"\/blog\/wp-content\/uploads\/2025\/03\/dart-2-vippro.png\" alt=\"dart l\u00e0 g\u00ec - itviec blog\" width=\"1600\" height=\"900\" \/><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dart l\u00e0 m\u1ed9t ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh hi\u1ec7n \u0111\u1ea1i, m\u1ea1nh m\u1ebd v\u00e0 \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 h\u1ed7 tr\u1ee3 ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng hi\u1ec7u su\u1ea5t cao tr\u00ean nhi\u1ec1u n\u1ec1n t\u1ea3ng. M\u1ed9t s\u1ed1 \u0111\u1eb7c \u0111i\u1ec3m n\u1ed5i b\u1eadt c\u1ee7a Dart bao g\u1ed3m:<\/span><b><\/b><\/p>\n<h3><b>C\u00fa ph\u00e1p r\u00f5 r\u00e0ng v\u00e0 d\u1ec5 h\u1ecdc<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart c\u00f3 c\u00fa ph\u00e1p \u0111\u01a1n gi\u1ea3n, th\u00e2n thi\u1ec7n v\u1edbi l\u1eadp tr\u00ecnh vi\u00ean, \u0111\u1eb7c bi\u1ec7t n\u1ebfu \u0111\u00e3 quen thu\u1ed9c v\u1edbi c\u00e1c ng\u00f4n ng\u1eef nh\u01b0 C, Java ho\u1eb7c JavaScript. C\u00e1ch khai b\u00e1o bi\u1ebfn, \u0111\u1ecbnh ngh\u0129a h\u00e0m v\u00e0 c\u1ea5u tr\u00fac \u0111i\u1ec1u khi\u1ec3n trong Dart \u0111\u1ec1u mang phong c\u00e1ch quen thu\u1ed9c, gi\u00fap ng\u01b0\u1eddi m\u1edbi h\u1ecdc d\u1ec5 d\u00e0ng ti\u1ebfp c\u1eadn.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">int add(int a, int b) {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0return a + b;\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">}\u00a0 <\/span>\n<span style=\"font-weight: 400;\">void main() {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0print(add(3, 5)); \/\/ Output: 8\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">}\u00a0\u00a0<\/span><b><\/b><\/pre>\n<h3><b>H\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng (Object-oriented)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart l\u00e0 ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng, h\u1ed7 tr\u1ee3 c\u00e1c kh\u00e1i ni\u1ec7m nh\u01b0 l\u1edbp, k\u1ebf th\u1eeba, \u0111a h\u00ecnh v\u00e0 \u0111\u00f3ng g\u00f3i. T\u1ea5t c\u1ea3 m\u1ecdi th\u1ee9 trong Dart \u0111\u1ec1u l\u00e0 \u0111\u1ed1i t\u01b0\u1ee3ng, k\u1ec3 c\u1ea3 c\u00e1c ki\u1ec3u d\u1eef li\u1ec7u c\u01a1 b\u1ea3n nh\u01b0 <\/span><span style=\"font-weight: 400;\">int<\/span><span style=\"font-weight: 400;\"> v\u00e0 <\/span><span style=\"font-weight: 400;\">String<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">class Animal {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0String name;\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\"> \u00a0Animal(this.name);\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\"> \u00a0void sound() =&gt; print('$name makes a sound');\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">}\u00a0\u00a0<\/span>\n\n<span style=\"font-weight: 400;\">void main() {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0var cat = Animal('Cat');\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\"> \u00a0cat.sound(); \/\/ Output: Cat makes a sound\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">}\u00a0\u00a0<\/span><\/pre>\n<h3><b>L\u1eadp tr\u00ecnh b\u1ea5t \u0111\u1ed3ng b\u1ed9 v\u1edbi Future v\u00e0 Stream<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart h\u1ed7 tr\u1ee3 l\u1eadp tr\u00ecnh b\u1ea5t \u0111\u1ed3ng b\u1ed9 gi\u00fap x\u1eed l\u00fd c\u00e1c t\u00e1c v\u1ee5 m\u1ea5t th\u1eddi gian nh\u01b0 g\u1ecdi API ho\u1eb7c \u0111\u1ecdc d\u1eef li\u1ec7u t\u1eeb file.<\/span><\/p>\n<h4><b>Future<\/b><\/h4>\n<pre><span style=\"font-weight: 400;\">Future&lt;String&gt; fetchData() async {<\/span>\n<span style=\"font-weight: 400;\"> \u00a0await Future.delayed(Duration(seconds: 2));<\/span>\n<span style=\"font-weight: 400;\"> \u00a0return 'Data fetched';<\/span>\n<span style=\"font-weight: 400;\">}<\/span>\n\n<span style=\"font-weight: 400;\">void main() async {<\/span>\n<span style=\"font-weight: 400;\"> \u00a0print('Start');<\/span>\n<span style=\"font-weight: 400;\"> \u00a0String data = await fetchData();<\/span>\n<span style=\"font-weight: 400;\"> \u00a0print(data);<\/span>\n<span style=\"font-weight: 400;\"> \u00a0print('End');<\/span>\n<span style=\"font-weight: 400;\">}<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Quy tr\u00ecnh ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Future trong \u0111o\u1ea1n code n\u00e0y:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>H\u00e0m fetchData() tr\u1ea3 v\u1ec1 m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng Future&lt;String&gt;<\/b><span style=\"font-weight: 400;\"> cho bi\u1ebft r\u1eb1ng h\u00e0m s\u1ebd ho\u00e0n th\u00e0nh trong t\u01b0\u01a1ng lai v\u00e0 tr\u1ea3 v\u1ec1 m\u1ed9t chu\u1ed7i.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">L\u1ec7nh <\/span><b>await Future.delayed(Duration(seconds: 2))<\/b><span style=\"font-weight: 400;\">; l\u00e0m tr\u1ec5 th\u1ef1c thi trong 2 gi\u00e2y \u0111\u1ec3 gi\u1ea3 l\u1eadp m\u1ed9t t\u00e1c v\u1ee5 b\u1ea5t \u0111\u1ed3ng b\u1ed9 nh\u01b0 g\u1ecdi API ho\u1eb7c \u0111\u1ecdc file.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">T\u1eeb kh\u00f3a <\/span><b>async<\/b><span style=\"font-weight: 400;\"> gi\u00fap h\u00e0m c\u00f3 th\u1ec3 tr\u1ea3 v\u1ec1 <\/span><b>Future<\/b><span style=\"font-weight: 400;\"> v\u00e0 cho ph\u00e9p s\u1eed d\u1ee5ng <\/span><b>await<\/b><span style=\"font-weight: 400;\"> \u0111\u1ec3 ch\u1edd k\u1ebft qu\u1ea3.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Trong h\u00e0m <\/span><b>main<\/b><span style=\"font-weight: 400;\">(), c\u00e2u l\u1ec7nh await <\/span><b>fetchData<\/b><span style=\"font-weight: 400;\">(); s\u1ebd t\u1ea1m d\u1eebng ch\u01b0\u01a1ng tr\u00ecnh cho \u0111\u1ebfn khi <\/span><b>fetchData<\/b><span style=\"font-weight: 400;\">() ho\u00e0n th\u00e0nh v\u00e0 tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">C\u00e2u l\u1ec7nh <\/span><b>print(data); <\/b><span style=\"font-weight: 400;\">s\u1ebd in ra k\u1ebft qu\u1ea3 tr\u1ea3 v\u1ec1, sau \u0111\u00f3 ch\u01b0\u01a1ng tr\u00ecnh ti\u1ebfp t\u1ee5c ch\u1ea1y v\u00e0 in ra <\/span><b>End<\/b><span style=\"font-weight: 400;\">.<\/span><\/li>\n<\/ul>\n<h4><b>Stream<\/b><\/h4>\n<pre><span style=\"font-weight: 400;\">Stream&lt;int&gt; countStream(int max) async* {<\/span>\n<span style=\"font-weight: 400;\"> \u00a0for (int i = 0; i &lt;= max; i++) {<\/span>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0await Future.delayed(Duration(seconds: 1));<\/span>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0yield i;<\/span>\n<span style=\"font-weight: 400;\"> \u00a0}<\/span>\n<span style=\"font-weight: 400;\">}<\/span>\n\n<span style=\"font-weight: 400;\">void main() async {<\/span>\n<span style=\"font-weight: 400;\"> \u00a0await for (int count in countStream(5)) {<\/span>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0print(count);<\/span>\n<span style=\"font-weight: 400;\"> \u00a0}<\/span>\n<span style=\"font-weight: 400;\">}<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Quy tr\u00ecnh ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Stream trong \u0111o\u1ea1n code n\u00e0y:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">H\u00e0m <\/span><span style=\"font-weight: 400;\">countStream(int max)<\/span><span style=\"font-weight: 400;\"> tr\u1ea3 v\u1ec1 m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng <\/span><span style=\"font-weight: 400;\">Stream&lt;int&gt;<\/span><span style=\"font-weight: 400;\">, ph\u00e1t ra c\u00e1c gi\u00e1 tr\u1ecb t\u1eeb 0 \u0111\u1ebfn <\/span><span style=\"font-weight: 400;\">max<\/span><span style=\"font-weight: 400;\">.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">T\u1eeb kh\u00f3a <\/span><span style=\"font-weight: 400;\">async*<\/span><span style=\"font-weight: 400;\"> cho ph\u00e9p h\u00e0m tr\u1ea3 v\u1ec1 nhi\u1ec1u gi\u00e1 tr\u1ecb theo th\u1eddi gian.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">L\u1ec7nh <\/span><span style=\"font-weight: 400;\">await Future.delayed(Duration(seconds: 1));<\/span><span style=\"font-weight: 400;\"> l\u00e0m ch\u1eadm m\u1ed7i l\u1ea7n ph\u00e1t gi\u00e1 tr\u1ecb, m\u00f4 ph\u1ecfng m\u1ed9t t\u00e1c v\u1ee5 b\u1ea5t \u0111\u1ed3ng b\u1ed9.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">T\u1eeb kh\u00f3a <\/span><span style=\"font-weight: 400;\">yield<\/span><span style=\"font-weight: 400;\"> \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 ph\u00e1t ra t\u1eebng gi\u00e1 tr\u1ecb trong Stream.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Trong h\u00e0m <\/span><span style=\"font-weight: 400;\">main()<\/span><span style=\"font-weight: 400;\">, v\u00f2ng l\u1eb7p <\/span><span style=\"font-weight: 400;\">await for<\/span><span style=\"font-weight: 400;\"> d\u00f9ng \u0111\u1ec3 l\u1eafng nghe Stream v\u00e0 x\u1eed l\u00fd t\u1eebng gi\u00e1 tr\u1ecb khi n\u00f3 \u0111\u01b0\u1ee3c ph\u00e1t ra.<\/span><\/li>\n<\/ul>\n<h4><b>S\u1ef1 kh\u00e1c bi\u1ec7t gi\u1eefa Stream v\u00e0 Future<\/b><\/h4>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Future<\/span><span style=\"font-weight: 400;\"> tr\u1ea3 v\u1ec1 m\u1ed9t gi\u00e1 tr\u1ecb duy nh\u1ea5t sau khi ho\u00e0n th\u00e0nh, trong khi <\/span><span style=\"font-weight: 400;\">Stream<\/span><span style=\"font-weight: 400;\"> c\u00f3 th\u1ec3 ph\u00e1t ra nhi\u1ec1u gi\u00e1 tr\u1ecb theo th\u1eddi gian.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Future<\/span><span style=\"font-weight: 400;\"> \u0111\u1ea1i di\u1ec7n cho m\u1ed9t t\u00e1c v\u1ee5 \u0111\u01a1n l\u1ebb, c\u00f2n <\/span><span style=\"font-weight: 400;\">Stream<\/span><span style=\"font-weight: 400;\"> th\u00edch h\u1ee3p cho c\u00e1c lu\u1ed3ng d\u1eef li\u1ec7u li\u00ean t\u1ee5c ho\u1eb7c c\u00e1c s\u1ef1 ki\u1ec7n kh\u00f4ng \u0111\u1ed3ng b\u1ed9.<\/span><\/li>\n<\/ul>\n<h3><b>H\u1ed7 tr\u1ee3 Hot Reload<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart k\u1ebft h\u1ee3p v\u1edbi Flutter h\u1ed7 tr\u1ee3 t\u00ednh n\u0103ng Hot Reload, cho ph\u00e9p c\u1eadp nh\u1eadt giao di\u1ec7n ho\u1eb7c logic \u1ee9ng d\u1ee5ng trong khi \u1ee9ng d\u1ee5ng v\u1eabn \u0111ang ch\u1ea1y m\u00e0 kh\u00f4ng c\u1ea7n kh\u1edfi \u0111\u1ed9ng l\u1ea1i. \u0110i\u1ec1u n\u00e0y gi\u00fap t\u0103ng t\u1ed1c \u0111\u1ed9 ph\u00e1t tri\u1ec3n v\u00e0 th\u1eed nghi\u1ec7m giao di\u1ec7n.<\/span><\/p>\n<h3><b>Bi\u00ean d\u1ecbch Ahead-of-Time (AOT) v\u00e0 Just-in-Time (JIT)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart h\u1ed7 tr\u1ee3 c\u1ea3 hai c\u01a1 ch\u1ebf bi\u00ean d\u1ecbch:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Ahead-of-Time (AOT):<\/b><span style=\"font-weight: 400;\"> Bi\u00ean d\u1ecbch m\u00e3 ngu\u1ed3n th\u00e0nh m\u00e3 m\u00e1y tr\u01b0\u1edbc khi ch\u1ea1y, gi\u00fap t\u0103ng hi\u1ec7u su\u1ea5t khi \u1ee9ng d\u1ee5ng ch\u1ea1y tr\u00ean thi\u1ebft b\u1ecb di \u0111\u1ed9ng.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Just-in-Time (JIT):<\/b><span style=\"font-weight: 400;\"> Bi\u00ean d\u1ecbch m\u00e3 trong qu\u00e1 tr\u00ecnh ch\u1ea1y, gi\u00fap ph\u00e1t tri\u1ec3n nhanh h\u01a1n trong giai \u0111o\u1ea1n th\u1eed nghi\u1ec7m.<\/span><\/li>\n<li aria-level=\"1\"><b>Ki\u1ec3u t\u0129nh (Static typing): <\/b>Dart h\u1ed7 tr\u1ee3 ki\u1ec3u t\u0129nh (static typing), gi\u00fap ph\u00e1t hi\u1ec7n l\u1ed7i ngay trong qu\u00e1 tr\u00ecnh bi\u00ean d\u1ecbch, l\u00e0m cho m\u00e3 ngu\u1ed3n an to\u00e0n v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n.<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">String greet(String name) {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0return 'Hello, $name';\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">}\u00a0 <\/span>\n<span style=\"font-weight: 400;\">void main() {\u00a0 <\/span>\n<span style=\"font-weight: 400;\"> \u00a0print(greet('Alice')); \/\/ Output: Hello, Alice\u00a0\u00a0<\/span>\n<span style=\"font-weight: 400;\">}<\/span><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Uu_diem_va_nhuoc_diem_cua_Dart_la_gi\"><\/span><b>\u01afu \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a Dart l\u00e0 g\u00ec?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><b>\u01afu \u0111i\u1ec3m Dart<\/b><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Hi\u1ec7u su\u1ea5t cao:<\/b><span style=\"font-weight: 400;\"> Dart c\u00f3 kh\u1ea3 n\u0103ng bi\u00ean d\u1ecbch tr\u1ef1c ti\u1ebfp sang m\u00e3 m\u00e1y (native code) ho\u1eb7c JavaScript, gi\u00fap \u1ee9ng d\u1ee5ng ch\u1ea1y nhanh v\u00e0 t\u1ed1i \u01b0u hi\u1ec7u su\u1ea5t, \u0111\u1eb7c bi\u1ec7t trong c\u00e1c \u1ee9ng d\u1ee5ng di \u0111\u1ed9ng s\u1eed d\u1ee5ng Flutter.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Ph\u00e1t tri\u1ec3n nhanh ch\u00f3ng:<\/b><span style=\"font-weight: 400;\"> Nh\u1edd c\u00fa ph\u00e1p \u0111\u01a1n gi\u1ea3n, d\u1ec5 h\u1ecdc v\u00e0 t\u00ednh n\u0103ng Hot Reload trong Flutter, qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n v\u00e0 ki\u1ec3m th\u1eed \u1ee9ng d\u1ee5ng \u0111\u01b0\u1ee3c \u0111\u1ea9y nhanh \u0111\u00e1ng k\u1ec3.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>C\u1ed9ng \u0111\u1ed3ng h\u1ed7 tr\u1ee3 m\u1ea1nh m\u1ebd:<\/b><span style=\"font-weight: 400;\"> Dart \u0111\u01b0\u1ee3c Google ph\u00e1t tri\u1ec3n v\u00e0 h\u1ed7 tr\u1ee3, c\u00f9ng v\u1edbi s\u1ef1 ph\u00e1t tri\u1ec3n c\u1ee7a Flutter, c\u1ed9ng \u0111\u1ed3ng Dart ng\u00e0y c\u00e0ng l\u1edbn m\u1ea1nh, cung c\u1ea5p nhi\u1ec1u t\u00e0i li\u1ec7u, kh\u00f3a h\u1ecdc v\u00e0 di\u1ec5n \u0111\u00e0n h\u1ed7 tr\u1ee3.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>T\u00ednh \u0111a n\u1ec1n t\u1ea3ng:<\/b><span style=\"font-weight: 400;\"> Dart cho ph\u00e9p vi\u1ebft m\u1ed9t l\u1ea7n v\u00e0 ch\u1ea1y tr\u00ean nhi\u1ec1u n\u1ec1n t\u1ea3ng nh\u01b0 Android, iOS, Web v\u00e0 Desktop, gi\u00fap ti\u1ebft ki\u1ec7m th\u1eddi gian v\u00e0 c\u00f4ng s\u1ee9c ph\u00e1t tri\u1ec3n.<\/span><\/li>\n<\/ul>\n<h3><b>Nh\u01b0\u1ee3c \u0111i\u1ec3m Dart<\/b><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>S\u1ed1 l\u01b0\u1ee3ng th\u01b0 vi\u1ec7n v\u00e0 g\u00f3i (packages) c\u00f2n h\u1ea1n ch\u1ebf:<\/b><span style=\"font-weight: 400;\"> So v\u1edbi JavaScript hay Python, h\u1ec7 sinh th\u00e1i th\u01b0 vi\u1ec7n v\u00e0 g\u00f3i c\u1ee7a Dart ch\u01b0a phong ph\u00fa, \u0111\u1eb7c bi\u1ec7t trong c\u00e1c l\u0129nh v\u1ef1c chuy\u00ean bi\u1ec7t.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>\u0110\u1ed9 ph\u1ed5 bi\u1ebfn ch\u01b0a cao:<\/b><span style=\"font-weight: 400;\"> Dart v\u1eabn c\u00f2n l\u00e0 ng\u00f4n ng\u1eef t\u01b0\u01a1ng \u0111\u1ed1i m\u1edbi, ch\u01b0a c\u00f3 \u0111\u1ed9 ph\u1ed5 bi\u1ebfn r\u1ed9ng r\u00e3i nh\u01b0 c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh l\u00e2u \u0111\u1eddi nh\u01b0 Java hay JavaScript, d\u1eabn \u0111\u1ebfn s\u1ed1 l\u01b0\u1ee3ng l\u1eadp tr\u00ecnh vi\u00ean v\u00e0 t\u00e0i li\u1ec7u tham kh\u1ea3o c\u00f2n \u00edt h\u01a1n.<\/span><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"So_sanh_Dart_voi_cac_ngon_ngu_lap_trinh_khac\"><\/span><b>So s\u00e1nh Dart v\u1edbi c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh kh\u00e1c\u00a0<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">B\u1ea3ng so s\u00e1nh d\u01b0\u1edbi \u0111\u00e2y gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean d\u1ec5 d\u00e0ng l\u1ef1a ch\u1ecdn ng\u00f4n ng\u1eef ph\u00f9 h\u1ee3p v\u1edbi nhu c\u1ea7u ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng c\u1ee7a m\u00ecnh:<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Ti\u00eau ch\u00ed<\/b><\/td>\n<td><b>Dart<\/b><\/td>\n<td><b>JavaScript<\/b><\/td>\n<td><b>Java\/Kotlin<\/b><\/td>\n<td><b>React Native<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>C\u00fa ph\u00e1p<\/b><\/td>\n<td><span style=\"font-weight: 400;\">H\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng, t\u01b0\u01a1ng t\u1ef1 Java v\u00e0 C#<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Ng\u00f4n ng\u1eef k\u1ecbch b\u1ea3n, kh\u00f4ng b\u1eaft bu\u1ed9c ki\u1ec3u d\u1eef li\u1ec7u<\/span><\/td>\n<td><span style=\"font-weight: 400;\">H\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng, ch\u1eb7t ch\u1ebd v\u1ec1 ki\u1ec3u d\u1eef li\u1ec7u<\/span><\/td>\n<td><span style=\"font-weight: 400;\">D\u1ef1a tr\u00ean JavaScript, k\u1ebft h\u1ee3p v\u1edbi JSX<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Hi\u1ec7u su\u1ea5t<\/b><\/td>\n<td><span style=\"font-weight: 400;\">Cao h\u01a1n do bi\u00ean d\u1ecbch tr\u1ef1c ti\u1ebfp th\u00e0nh m\u00e3 m\u00e1y<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Ch\u1eadm h\u01a1n, ph\u1ee5 thu\u1ed9c v\u00e0o tr\u00ecnh duy\u1ec7t ho\u1eb7c m\u00f4i tr\u01b0\u1eddng th\u1ef1c thi<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Cao, \u0111\u1eb7c bi\u1ec7t tr\u00ean n\u1ec1n t\u1ea3ng Android<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Trung b\u00ecnh, hi\u1ec7u su\u1ea5t gi\u1ea3m khi c\u00f3 nhi\u1ec1u th\u00e0nh ph\u1ea7n giao di\u1ec7n<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>M\u1ee5c \u0111\u00edch s\u1eed d\u1ee5ng<\/b><\/td>\n<td><span style=\"font-weight: 400;\">\u1ee8ng d\u1ee5ng \u0111a n\u1ec1n t\u1ea3ng (Web, Mobile, Desktop)<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\u1ee8ng d\u1ee5ng Web v\u00e0 Backend<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\u1ee8ng d\u1ee5ng Android, Backend<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\u1ee8ng d\u1ee5ng di \u0111\u1ed9ng \u0111a n\u1ec1n t\u1ea3ng<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>\u0110a n\u1ec1n t\u1ea3ng<\/b><\/td>\n<td><span style=\"font-weight: 400;\">H\u1ed7 tr\u1ee3 m\u1ea1nh m\u1ebd (Flutter)<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Ch\u1ee7 y\u1ebfu tr\u00ean Web, c\u00f3 th\u1ec3 d\u00f9ng Node.js cho backend<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Kotlin h\u1ed7 tr\u1ee3 \u0111a n\u1ec1n t\u1ea3ng v\u1edbi Kotlin Multiplatform<\/span><\/td>\n<td><span style=\"font-weight: 400;\">H\u1ed7 tr\u1ee3 di \u0111\u1ed9ng \u0111a n\u1ec1n t\u1ea3ng<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Kh\u1ea3 n\u0103ng t\u00edch h\u1ee3p UI<\/b><\/td>\n<td><span style=\"font-weight: 400;\">Widget c\u1ee7a Flutter, linh ho\u1ea1t v\u00e0 t\u1ed1i \u01b0u h\u00f3a hi\u1ec7u su\u1ea5t<\/span><\/td>\n<td><span style=\"font-weight: 400;\">D\u1ef1a tr\u00ean HTML v\u00e0 CSS<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Android XML ho\u1eb7c Jetpack Compose<\/span><\/td>\n<td><span style=\"font-weight: 400;\">K\u1ebft h\u1ee3p Native UI Component v\u1edbi React<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>H\u1ed7 tr\u1ee3 b\u1ea5t \u0111\u1ed3ng b\u1ed9<\/b><\/td>\n<td><span style=\"font-weight: 400;\">async\/await t\u00edch h\u1ee3p s\u1eb5n<\/span><\/td>\n<td><span style=\"font-weight: 400;\">async\/await, Promise<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Threads v\u00e0 Coroutines<\/span><\/td>\n<td><span style=\"font-weight: 400;\">async\/await, Promise<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>C\u1ed9ng \u0111\u1ed3ng v\u00e0 Th\u01b0 vi\u1ec7n<\/b><\/td>\n<td><span style=\"font-weight: 400;\">\u0110ang ph\u00e1t tri\u1ec3n, \u00edt h\u01a1n so v\u1edbi JavaScript v\u00e0 Kotlin<\/span><\/td>\n<td><span style=\"font-weight: 400;\">R\u1ea5t l\u1edbn, nhi\u1ec1u th\u01b0 vi\u1ec7n<\/span><\/td>\n<td><span style=\"font-weight: 400;\">L\u1edbn, ph\u1ed5 bi\u1ebfn tr\u00ean Android<\/span><\/td>\n<td><span style=\"font-weight: 400;\">L\u1edbn, \u0111\u1eb7c bi\u1ec7t v\u1edbi c\u00e1c th\u01b0 vi\u1ec7n UI v\u00e0 native modules<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>M\u1ee9c \u0111\u1ed9 ti\u1ebfp c\u1eadn<\/b><\/td>\n<td><span style=\"font-weight: 400;\">T\u01b0\u01a1ng \u0111\u1ed1i d\u1ec5 cho ng\u01b0\u1eddi \u0111\u00e3 bi\u1ebft Java\/C#<\/span><\/td>\n<td><span style=\"font-weight: 400;\">D\u1ec5 h\u1ecdc, ph\u1ed5 bi\u1ebfn<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Kh\u00f3 h\u01a1n do c\u00fa ph\u00e1p ph\u1ee9c t\u1ea1p<\/span><\/td>\n<td><span style=\"font-weight: 400;\">D\u1ec5 h\u1ecdc n\u1ebfu \u0111\u00e3 bi\u1ebft JavaScript<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote><p><em>\u0110\u1ecdc th\u00eam: <a href=\"\/blog\/kotlin-vs-java\/\" target=\"_blank\" rel=\"noopener\"><strong>Kotlin vs Java: Khi n\u00e0o n\u00ean ch\u1ecdn Kotlin? Khi n\u00e0o n\u00ean ch\u1ecdn Java?<\/strong><\/a><\/em><\/p><\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"Ung_dung_thuc_te_cua_Dart\"><\/span><b>\u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Dart \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng r\u1ed9ng r\u00e3i trong c\u00e1c d\u1ef1 \u00e1n ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng \u0111a n\u1ec1n t\u1ea3ng, ph\u1ed5 bi\u1ebfn nh\u1ea5t l\u00e0 trong <\/span><b>Flutter<\/b><span style=\"font-weight: 400;\">, framework gi\u00fap x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng di \u0111\u1ed9ng, web v\u00e0 desktop t\u1eeb m\u1ed9t m\u00e3 ngu\u1ed3n duy nh\u1ea5t. C\u1ee5 th\u1ec3:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>\u1ee8ng d\u1ee5ng di \u0111\u1ed9ng: <\/b><span style=\"font-weight: 400;\">V\u1edbi th\u1ebf m\u1ea1nh ph\u00e1t tri\u1ec3n \u0111a n\u1ec1n t\u1ea3ng, c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean Mobile c\u00f3 th\u1ec3 ti\u1ebft ki\u1ebfm ngu\u1ed3n l\u1ef1c b\u1eb1ng vi\u1ec7c s\u1eed d\u1ee5ng Flutter tri\u1ec3n khai \u1ee9ng d\u1ee5ng c\u1ee7a m\u00ecnh tr\u00ean c\u1ea3 hai n\u1ec1n t\u1ea3ng Android v\u00e0 iOS tr\u00ean c\u00f9ng 1 m\u00e3 ngu\u1ed3n.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>\u1ee8ng d\u1ee5ng Web<\/b><span style=\"font-weight: 400;\">: Dart c\u00f3 th\u1ec3 bi\u00ean d\u1ecbch sang JavaScript, gi\u00fap x\u00e2y d\u1ef1ng c\u00e1c \u1ee9ng d\u1ee5ng web hi\u1ec7u su\u1ea5t cao.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>\u1ee8ng d\u1ee5ng m\u00e1y t\u00ednh \u0111\u1ec3 b\u00e0n<\/b><span style=\"font-weight: 400;\">: V\u1edbi s\u1ef1 h\u1ed7 tr\u1ee3 t\u1eeb Flutter, Dart c\u00f3 kh\u1ea3 n\u0103ng ph\u00e1t tri\u1ec3n c\u00e1c \u1ee9ng d\u1ee5ng m\u00e1y t\u00ednh tr\u00ean c\u1ea3 macOS, Windows v\u00e0 Linux.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>IoT v\u00e0 d\u1ecbch v\u1ee5 Backend<\/b><span style=\"font-weight: 400;\">: Dart ng\u00e0y c\u00e0ng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u00e2y d\u1ef1ng c\u00e1c d\u1ecbch v\u1ee5 backend nh\u1edd kh\u1ea3 n\u0103ng l\u1eadp tr\u00ecnh b\u1ea5t \u0111\u1ed3ng b\u1ed9 v\u00e0 hi\u1ec7u su\u1ea5t cao.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>\u1ee8ng d\u1ee5ng tr\u00ed tu\u1ec7 nh\u00e2n t\u1ea1o (AI): <\/b><span style=\"font-weight: 400;\">M\u1eb7c d\u00f9 ch\u01b0a ph\u1ed5 bi\u1ebfn, Dart c\u00f3 ti\u1ec1m n\u0103ng trong l\u0129nh v\u1ef1c AI nh\u1edd kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng v\u00e0 t\u00edch h\u1ee3p v\u1edbi c\u00e1c th\u01b0 vi\u1ec7n native th\u00f4ng qua <\/span><a href=\"https:\/\/pub.dev\/packages\/ffi\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">FFI<\/span><\/a><span style=\"font-weight: 400;\"> (Foreign Function Interface).\u00a0<\/span><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Cac_tinh_nang_moi_cua_Dart_2025\"><\/span><b>C\u00e1c t\u00ednh n\u0103ng m\u1edbi c\u1ee7a Dart 2025<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">V\u1edbi s\u1ef1 h\u1eadu thu\u1eabn t\u1eeb Google v\u00e0 h\u1ec7 sinh th\u00e1i Flutter, Dart li\u00ean t\u1ee5c \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt \u0111\u1ec3 \u0111\u00e1p \u1ee9ng nhu c\u1ea7u ng\u00e0y c\u00e0ng cao v\u1ec1 hi\u1ec7u su\u1ea5t, kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng v\u00e0 s\u1ef1 linh ho\u1ea1t trong ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m. C\u00e1c t\u00ednh n\u0103ng Dart \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt m\u1edbi nh\u1ea5t bao g\u1ed3m:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Null safety: <\/b><span style=\"font-weight: 400;\">Null Safety trong Flutter Dart gi\u00fap ng\u0103n l\u1ed7i null b\u1eb1ng c\u00e1ch ph\u00e2n bi\u1ec7t bi\u1ebfn c\u00f3 th\u1ec3 null (?) v\u00e0 bi\u1ebfn kh\u00f4ng th\u1ec3 null.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Extension methods: <\/b><span style=\"font-weight: 400;\">Cho ph\u00e9p m\u1edf r\u1ed9ng ch\u1ee9c n\u0103ng c\u1ee7a c\u00e1c l\u1edbp c\u00f3 s\u1eb5n m\u00e0 kh\u00f4ng c\u1ea7n s\u1eeda \u0111\u1ed5i m\u00e3 ngu\u1ed3n g\u1ed1c.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>FFI (Foreign Function Interface)<\/b><span style=\"font-weight: 400;\">: C\u00e1c h\u00e0m \u0111\u01b0\u1ee3c vi\u1ebft b\u1eb1ng ng\u00f4n ng\u1eef kh\u00e1c t\u1eeb Dart. FFI gi\u00fap s\u1eed d\u1ee5ng c\u00e1c th\u01b0 vi\u1ec7n \u0111\u01b0\u1ee3c vi\u1ebft b\u1eb1ng ng\u00f4n ng\u1eef kh\u00e1c trong \u1ee9ng d\u1ee5ng Flutter. Flutter h\u1ed7 tr\u1ee3 FFI cho Android, iOS, Linux, macOS v\u00e0 Windows.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>T\u1ed1i \u01b0u h\u00f3a hi\u1ec7u su\u1ea5t bi\u00ean d\u1ecbch AOT (Ahead-of-Time) v\u00e0 JIT (Just-in-Time)<\/b><span style=\"font-weight: 400;\">: Gi\u00fap \u1ee9ng d\u1ee5ng ch\u1ea1y nhanh h\u01a1n v\u00e0 ti\u1ebft ki\u1ec7m t\u00e0i nguy\u00ean h\u01a1n.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>H\u1ed7 tr\u1ee3 Web Assembly v\u00e0 \u0111a lu\u1ed3ng (Isolates)<\/b><span style=\"font-weight: 400;\">: Gi\u00fap m\u1edf r\u1ed9ng kh\u1ea3 n\u0103ng \u1ee9ng d\u1ee5ng trong c\u00e1c l\u0129nh v\u1ef1c nh\u01b0 IoT v\u00e0 ph\u00e1t tri\u1ec3n d\u1ecbch v\u1ee5 n\u1ec1n t\u1ea3ng \u0111\u00e1m m\u00e2y.<\/span><\/li>\n<\/ul>\n<blockquote><p><span style=\"font-weight: 400;\">Tham kh\u1ea3o th\u00eam: <\/span><a href=\"https:\/\/dart.dev\/resources\/whats-new\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\"><strong>C\u00e1c c\u1eadp nh\u1eadt m\u1edbi nh\u1ea5t c\u1ee7a Dart trong n\u0103m 2025<\/strong><\/span><\/a><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">Xu h\u01b0\u1edbng ph\u00e1t tri\u1ec3n c\u1ee7a Dart t\u1eadp trung v\u00e0o vi\u1ec7c t\u1ed1i \u01b0u h\u00f3a hi\u1ec7u n\u0103ng, h\u1ed7 tr\u1ee3 c\u00e1c t\u00ednh n\u0103ng l\u1eadp tr\u00ecnh b\u1ea5t \u0111\u1ed3ng b\u1ed9 v\u00e0 t\u00edch h\u1ee3p c\u00e1c c\u00f4ng c\u1ee5 hi\u1ec7n \u0111\u1ea1i, gi\u00fap x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng nhanh ch\u00f3ng h\u01a1n. C\u00e1c phi\u00ean b\u1ea3n m\u1edbi th\u01b0\u1eddng xuy\u00ean b\u1ed5 sung c\u00e1c API m\u1ea1nh m\u1ebd, c\u00f9ng kh\u1ea3 n\u0103ng bi\u00ean d\u1ecbch linh ho\u1ea1t cho c\u1ea3 n\u1ec1n t\u1ea3ng mobile, web v\u00e0 server-side.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dart c\u0169ng m\u1edf r\u1ed9ng ti\u1ec1m n\u0103ng trong c\u00e1c l\u0129nh v\u1ef1c m\u1edbi nh\u01b0 ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng IoT, Machine Learning v\u00e0 l\u1eadp tr\u00ecnh Backend, nh\u1edd v\u00e0o c\u00e1c th\u01b0 vi\u1ec7n v\u00e0 framework nh\u01b0 Dart Frog v\u00e0 Serverpod. \u0110i\u1ec1u n\u00e0y gi\u00fap Dart kh\u00f4ng ch\u1ec9 l\u00e0 ng\u00f4n ng\u1eef d\u00e0nh ri\u00eang cho Flutter m\u00e0 c\u00f2n tr\u1edf th\u00e0nh gi\u1ea3i ph\u00e1p to\u00e0n di\u1ec7n trong h\u1ec7 sinh th\u00e1i ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cac_cong_dong_Dart_Flutter_pho_bien\"><\/span><b>C\u00e1c c\u1ed9ng \u0111\u1ed3ng Dart &amp; Flutter ph\u1ed5 bi\u1ebfn<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Dart v\u00e0 Flutter c\u00f3 m\u1ed9t h\u1ec7 sinh th\u00e1i c\u1ed9ng \u0111\u1ed3ng ph\u00e1t tri\u1ec3n m\u1ea1nh m\u1ebd, n\u01a1i c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean c\u00f3 th\u1ec3 h\u1ecdc h\u1ecfi, chia s\u1ebb ki\u1ebfn th\u1ee9c v\u00e0 c\u1eadp nh\u1eadt c\u00e1c xu h\u01b0\u1edbng c\u00f4ng ngh\u1ec7 m\u1edbi. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 m\u1ed9t s\u1ed1 c\u1ed9ng \u0111\u1ed3ng Dart &amp; Flutter \u0111\u00e1ng tham kh\u1ea3o:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"http:\/\/medium.com\/flutter-community\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Flutter community<\/span><\/a><span style=\"font-weight: 400;\">: C\u1ed9ng \u0111\u1ed3ng l\u1edbn tr\u00ean Medium, chia s\u1ebb c\u00e1c b\u00e0i vi\u1ebft, h\u01b0\u1edbng d\u1eabn v\u00e0 m\u1eb9o ph\u00e1t tri\u1ec3n Flutter.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"http:\/\/groups.google.com\/g\/flutter-dev\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Flutter Dev Google Groups<\/span><\/a><span style=\"font-weight: 400;\">: Di\u1ec5n \u0111\u00e0n ch\u00ednh th\u1ee9c c\u1ee7a Google cho c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n Flutter \u0111\u1ec3 th\u1ea3o lu\u1eadn v\u00e0 \u0111\u1eb7t c\u00e2u h\u1ecfi.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"http:\/\/facebook.com\/groups\/fluttervietnam\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Flutter Vi\u1ec7t Nam<\/span><\/a><span style=\"font-weight: 400;\">: C\u1ed9ng \u0111\u1ed3ng Facebook d\u00e0nh cho l\u1eadp tr\u00ecnh vi\u00ean Flutter t\u1ea1i Vi\u1ec7t Nam, chia s\u1ebb ki\u1ebfn th\u1ee9c v\u00e0 kinh nghi\u1ec7m.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"http:\/\/stackoverflow.com\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Stack Overflow<\/span><\/a><span style=\"font-weight: 400;\"> (Dart &amp; Flutter): Di\u1ec5n \u0111\u00e0n h\u1ecfi \u0111\u00e1p n\u1ed5i ti\u1ebfng, n\u01a1i b\u1ea1n c\u00f3 th\u1ec3 t\u00ecm ki\u1ebfm c\u00e1c v\u1ea5n \u0111\u1ec1 k\u1ef9 thu\u1eadt li\u00ean quan \u0111\u1ebfn Dart v\u00e0 Flutter.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"http:\/\/flutterawesome.com\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Flutter Awesome<\/span><\/a><span style=\"font-weight: 400;\">: Th\u01b0 vi\u1ec7n t\u1ed5ng h\u1ee3p c\u00e1c d\u1ef1 \u00e1n m\u00e3 ngu\u1ed3n m\u1edf v\u00e0 c\u00e1c package h\u1eefu \u00edch cho Flutter.<\/span><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Cac_cau_hoi_thuong_gap_ve_Dart_la_gi\"><\/span><b>C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Dart l\u00e0 g\u00ec<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><b>Dart kh\u00e1c bi\u1ec7t nh\u01b0 th\u1ebf n\u00e0o so v\u1edbi c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh kh\u00e1c?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dart kh\u00e1c bi\u1ec7t v\u1edbi c\u00e1c ng\u00f4n ng\u1eef kh\u00e1c \u1edf c\u00e1c \u0111\u1eb7c \u0111i\u1ec3m sau:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">T\u1ed1i \u01b0u h\u00f3a cho UI: H\u1ed7 tr\u1ee3 x\u00e2y d\u1ef1ng giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng m\u01b0\u1ee3t m\u00e0, \u0111\u1eb7c bi\u1ec7t trong Flutter.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">K\u1ebft h\u1ee3p bi\u00ean d\u1ecbch Just-In-Time (ph\u00e1t tri\u1ec3n) v\u00e0 Ahead-Of-Time (hi\u1ec7u su\u1ea5t).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Null Safety: Gi\u00fap ng\u0103n l\u1ed7i Null Pointer Exception.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Async\/Await t\u00edch h\u1ee3p: X\u1eed l\u00fd b\u1ea5t \u0111\u1ed3ng b\u1ed9 \u0111\u01a1n gi\u1ea3n v\u00e0 tr\u1ef1c quan.<\/span><\/li>\n<\/ul>\n<h3><b>Nh\u1eefng c\u00f4ng c\u1ee5 n\u00e0o c\u1ea7n thi\u1ebft \u0111\u1ec3 ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng Dart?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">C\u00e1c c\u00f4ng c\u1ee5 c\u1ea7n thi\u1ebft \u0111\u1ec3 ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng Dart g\u1ed3m:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/dart.dev\/get-dart\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Dart SDK:<\/span><\/a><span style=\"font-weight: 400;\"> Cung c\u1ea5p tr\u00ecnh bi\u00ean d\u1ecbch v\u00e0 c\u00e1c th\u01b0 vi\u1ec7n c\u1ed1t l\u00f5i.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">IDE\/Code Editor: <\/span><a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Visual Studio Code<\/span><\/a><span style=\"font-weight: 400;\">, <\/span><a href=\"https:\/\/www.jetbrains.com\/idea\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">IntelliJ IDEA<\/span><\/a><span style=\"font-weight: 400;\">, ho\u1eb7c <\/span><a href=\"https:\/\/developer.android.com\/studio\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Android Studio<\/span><\/a><span style=\"font-weight: 400;\"> (h\u1ed7 tr\u1ee3 plugin Dart).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/pub.dev\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Pub<\/span><\/a><span style=\"font-weight: 400;\">: Tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i c\u1ee7a Dart \u0111\u1ec3 c\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/dart.dev\/tools\/dart-devtools\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Dart DevTools<\/span><\/a>: <span style=\"font-weight: 400;\">B\u1ed9 c\u00f4ng c\u1ee5 g\u1ee1 l\u1ed7i v\u00e0 ph\u00e2n t\u00edch hi\u1ec7u su\u1ea5t.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/flutter.dev\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Flutter SDK<\/span><\/a><span style=\"font-weight: 400;\"> (n\u1ebfu ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng mobile).<\/span><\/li>\n<\/ol>\n<h3><b>L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a hi\u1ec7u su\u1ea5t \u1ee9ng d\u1ee5ng Dart?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">\u0110\u1ec3 t\u1ed1i \u01b0u h\u00f3a hi\u1ec7u su\u1ea5t \u1ee9ng d\u1ee5ng Dart, b\u1ea1n c\u00f3 th\u1ec3:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">S\u1eed d\u1ee5ng AOT Compilation: Bi\u00ean d\u1ecbch m\u00e3 tr\u01b0\u1edbc khi ch\u1ea1y (Ahead-of-Time) \u0111\u1ec3 c\u1ea3i thi\u1ec7n t\u1ed1c \u0111\u1ed9 th\u1ef1c thi.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tr\u00e1nh t\u00ednh to\u00e1n n\u1eb7ng trong UI Thread: S\u1eed d\u1ee5ng Isolate \u0111\u1ec3 ch\u1ea1y t\u00e1c v\u1ee5 b\u1ea5t \u0111\u1ed3ng b\u1ed9.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">T\u1ed1i \u01b0u h\u00f3a b\u1ed9 nh\u1edb: H\u1ea1n ch\u1ebf t\u1ea1o nhi\u1ec1u \u0111\u1ed1i t\u01b0\u1ee3ng kh\u00f4ng c\u1ea7n thi\u1ebft.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">S\u1eed d\u1ee5ng Collections hi\u1ec7u qu\u1ea3: \u01afu ti\u00ean Set v\u00e0 Map khi c\u1ea7n t\u00ecm ki\u1ebfm nhanh.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Lazy Initialization: Ch\u1ec9 kh\u1edfi t\u1ea1o \u0111\u1ed1i t\u01b0\u1ee3ng khi c\u1ea7n thi\u1ebft.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Profile v\u1edbi Dart DevTools: Ph\u00e2n t\u00edch hi\u1ec7u su\u1ea5t v\u00e0 g\u1ee1 l\u1ed7i.<\/span><\/li>\n<\/ul>\n<h3><b>Dart c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng m\u00e1y ch\u1ee7 kh\u00f4ng?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">C\u00f3, Dart c\u00f3 th\u1ec3 ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng m\u00e1y ch\u1ee7 nh\u1edd c\u00e1c th\u01b0 vi\u1ec7n nh\u01b0 dart:io. M\u1eb7c d\u00f9 m\u1ed9t s\u1ed1 framework nh\u01b0 Aqueduct \u0111\u00e3 ng\u1eebng ph\u00e1t tri\u1ec3n, Dart v\u1eabn l\u00e0 m\u1ed9t l\u1ef1a ch\u1ecdn ti\u1ec1m n\u0103ng cho c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean Back-End, \u0111\u1eb7c bi\u1ec7t khi k\u1ebft h\u1ee3p v\u1edbi <\/span><a href=\"https:\/\/pub.dev\/packages\/shelf\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Shelf<\/span><\/a><span style=\"font-weight: 400;\"> ho\u1eb7c c\u00e1c gi\u1ea3i ph\u00e1p server-side kh\u00e1c.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dart cung c\u1ea5p:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">X\u1eed l\u00fd HTTP: T\u1ea1o API v\u00e0 m\u00e1y ch\u1ee7 web.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">B\u1ea5t \u0111\u1ed3ng b\u1ed9: X\u1eed l\u00fd y\u00eau c\u1ea7u \u0111\u1ed3ng th\u1eddi hi\u1ec7u qu\u1ea3.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Cross-platform: Ch\u1ea1y tr\u00ean nhi\u1ec1u h\u1ec7 \u0111i\u1ec1u h\u00e0nh.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Pub Package Manager: C\u00e0i \u0111\u1eb7t v\u00e0 qu\u1ea3n l\u00fd th\u01b0 vi\u1ec7n d\u1ec5 d\u00e0ng.<\/span><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Tong_ket_Dart_la_gi\"><\/span><b>T\u1ed5ng k\u1ebft Dart l\u00e0 g\u00ec<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Dart l\u00e0 ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh hi\u1ec7n \u0111\u1ea1i, linh ho\u1ea1t v\u00e0 m\u1ea1nh m\u1ebd, ph\u00f9 h\u1ee3p cho c\u1ea3 ph\u00e1t tri\u1ec3n giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng l\u1eabn \u1ee9ng d\u1ee5ng m\u00e1y ch\u1ee7. V\u1edbi c\u00e1c t\u00ednh n\u0103ng n\u1ed5i b\u1eadt nh\u01b0 h\u1ed7 tr\u1ee3 b\u1ea5t \u0111\u1ed3ng b\u1ed9, Null Safety v\u00e0 kh\u1ea3 n\u0103ng bi\u00ean d\u1ecbch hi\u1ec7u qu\u1ea3, Dart gi\u00fap c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng nhanh ch\u00f3ng v\u00e0 t\u1ed1i \u01b0u. <\/span><span style=\"font-weight: 400;\">K\u1ebft h\u1ee3p v\u1edbi Flutter, Dart ng\u00e0y c\u00e0ng tr\u1edf th\u00e0nh l\u1ef1a ch\u1ecdn ph\u1ed5 bi\u1ebfn trong ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng \u0111a n\u1ec1n t\u1ea3ng. Vi\u1ec7c n\u1eafm v\u1eefng Dart l\u00e0 g\u00ec s\u1ebd m\u1edf ra nhi\u1ec1u c\u01a1 h\u1ed9i trong ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m hi\u1ec7n \u0111\u1ea1i.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dart l\u00e0 ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh hi\u1ec7n \u0111\u1ea1i do Google ph\u00e1t tri\u1ec3n, \u0111\u01b0\u1ee3c xem l\u00e0 &#8220;tr\u00e1i tim&#8221; c\u1ee7a Flutter \u2013 framework ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng \u0111a n\u1ec1n t\u1ea3ng \u0111\u00ecnh \u0111\u00e1m hi\u1ec7n nay. C\u00f9ng kh\u00e1m ph\u00e1 Dart l\u00e0 g\u00ec c\u00f9ng nh\u1eefng t\u00ednh n\u0103ng n\u1ed5i b\u1eadt, hi\u1ec1u r\u00f5 v\u1ec1 c\u00fa ph\u00e1p v\u00e0 c\u00e1c \u1ee9ng d\u1ee5ng th\u1ef1c ti\u1ec5n [&hellip;]<\/p>\n","protected":false},"author":203,"featured_media":85252,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"categories":[109],"tags":[],"class_list":["post-85061","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chuyen-mon-it"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Dart l\u00e0 g\u00ec? C\u00fa ph\u00e1p, \u0110\u1eb7c \u0111i\u1ec3m, \u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart - ITviec Blog<\/title>\n<meta name=\"description\" content=\"T\u00ecm hi\u1ec3u Dart l\u00e0 g\u00ec \u2013 ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh t\u1ed1i \u01b0u cho Flutter. Kh\u00e1m ph\u00e1 c\u00fa ph\u00e1p, \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf v\u00e0 t\u00ednh n\u0103ng Dart m\u1edbi nh\u1ea5t!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itviec.com\/blog\/dart-la-gi\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dart l\u00e0 g\u00ec? C\u00fa ph\u00e1p, \u0110\u1eb7c \u0111i\u1ec3m, \u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart\" \/>\n<meta property=\"og:description\" content=\"Dart l\u00e0 ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh hi\u1ec7n \u0111\u1ea1i do Google ph\u00e1t tri\u1ec3n, \u0111\u01b0\u1ee3c xem l\u00e0 &quot;tr\u00e1i tim&quot; c\u1ee7a Flutter \u2013 framework ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng \u0111a n\u1ec1n t\u1ea3ng \u0111\u00ecnh \u0111\u00e1m hi\u1ec7n\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itviec.com\/blog\/dart-la-gi\/\" \/>\n<meta property=\"og:site_name\" content=\"ITviec Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITviec\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-25T04:31:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-17T08:19:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/dart-la-gi-vippro-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1347\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tien Tran\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ITviec\" \/>\n<meta name=\"twitter:site\" content=\"@ITviec\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tien Tran\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 ph\u00fat\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dart l\u00e0 g\u00ec? C\u00fa ph\u00e1p, \u0110\u1eb7c \u0111i\u1ec3m, \u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart - ITviec Blog","description":"T\u00ecm hi\u1ec3u Dart l\u00e0 g\u00ec \u2013 ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh t\u1ed1i \u01b0u cho Flutter. Kh\u00e1m ph\u00e1 c\u00fa ph\u00e1p, \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf v\u00e0 t\u00ednh n\u0103ng Dart m\u1edbi nh\u1ea5t!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itviec.com\/blog\/dart-la-gi\/","og_locale":"vi_VN","og_type":"article","og_title":"Dart l\u00e0 g\u00ec? C\u00fa ph\u00e1p, \u0110\u1eb7c \u0111i\u1ec3m, \u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart","og_description":"Dart l\u00e0 ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh hi\u1ec7n \u0111\u1ea1i do Google ph\u00e1t tri\u1ec3n, \u0111\u01b0\u1ee3c xem l\u00e0 \"tr\u00e1i tim\" c\u1ee7a Flutter \u2013 framework ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng \u0111a n\u1ec1n t\u1ea3ng \u0111\u00ecnh \u0111\u00e1m hi\u1ec7n","og_url":"https:\/\/itviec.com\/blog\/dart-la-gi\/","og_site_name":"ITviec Blog","article_publisher":"https:\/\/www.facebook.com\/ITviec","article_published_time":"2025-03-25T04:31:50+00:00","article_modified_time":"2025-06-17T08:19:15+00:00","og_image":[{"width":2560,"height":1347,"url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/dart-la-gi-vippro-scaled.png","type":"image\/png"}],"author":"Tien Tran","twitter_card":"summary_large_image","twitter_creator":"@ITviec","twitter_site":"@ITviec","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Tien Tran","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"17 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itviec.com\/blog\/dart-la-gi\/#article","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/dart-la-gi\/"},"author":{"name":"Tien Tran","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/1595d671c49cfa2a48cd3c0a047a1298"},"headline":"Dart l\u00e0 g\u00ec? C\u00fa ph\u00e1p, \u0110\u1eb7c \u0111i\u1ec3m, \u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart","datePublished":"2025-03-25T04:31:50+00:00","dateModified":"2025-06-17T08:19:15+00:00","mainEntityOfPage":{"@id":"https:\/\/itviec.com\/blog\/dart-la-gi\/"},"wordCount":4559,"publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"image":{"@id":"https:\/\/itviec.com\/blog\/dart-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/dart-la-gi-vippro-scaled.png","articleSection":["Chuy\u00ean m\u00f4n IT"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/itviec.com\/blog\/dart-la-gi\/","url":"https:\/\/itviec.com\/blog\/dart-la-gi\/","name":"Dart l\u00e0 g\u00ec? C\u00fa ph\u00e1p, \u0110\u1eb7c \u0111i\u1ec3m, \u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart - ITviec Blog","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itviec.com\/blog\/dart-la-gi\/#primaryimage"},"image":{"@id":"https:\/\/itviec.com\/blog\/dart-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/dart-la-gi-vippro-scaled.png","datePublished":"2025-03-25T04:31:50+00:00","dateModified":"2025-06-17T08:19:15+00:00","description":"T\u00ecm hi\u1ec3u Dart l\u00e0 g\u00ec \u2013 ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh t\u1ed1i \u01b0u cho Flutter. Kh\u00e1m ph\u00e1 c\u00fa ph\u00e1p, \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf v\u00e0 t\u00ednh n\u0103ng Dart m\u1edbi nh\u1ea5t!","breadcrumb":{"@id":"https:\/\/itviec.com\/blog\/dart-la-gi\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itviec.com\/blog\/dart-la-gi\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/dart-la-gi\/#primaryimage","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/dart-la-gi-vippro-scaled.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/dart-la-gi-vippro-scaled.png","width":2560,"height":1347,"caption":"dart l\u00e0 g\u00ec - itviec blog"},{"@type":"BreadcrumbList","@id":"https:\/\/itviec.com\/blog\/dart-la-gi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Chuy\u00ean m\u00f4n IT","item":"https:\/\/itviec.com\/blog\/chuyen-mon-it\/"},{"@type":"ListItem","position":2,"name":"Dart l\u00e0 g\u00ec? C\u00fa ph\u00e1p, \u0110\u1eb7c \u0111i\u1ec3m, \u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf c\u1ee7a Dart"}]},{"@type":"WebSite","@id":"https:\/\/itviec.com\/blog\/#website","url":"https:\/\/itviec.com\/blog\/","name":"ITviec Blog","description":"IT Jobs &amp; People in Vietnam","publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itviec.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/itviec.com\/blog\/#organization","name":"ITviec","url":"https:\/\/itviec.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","width":1800,"height":1800,"caption":"ITviec"},"image":{"@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITviec","https:\/\/x.com\/ITviec","https:\/\/www.linkedin.com\/company\/itviec","https:\/\/www.youtube.com\/channel\/UCYthAQ3bcGr57M_ag5gHDvQ"]},{"@type":"Person","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/1595d671c49cfa2a48cd3c0a047a1298","name":"Tien Tran","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/05\/tien-tran-author-e1715658627643-100x100.jpg","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/05\/tien-tran-author-e1715658627643-100x100.jpg","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/05\/tien-tran-author-e1715658627643-100x100.jpg","caption":"Tien Tran"},"url":"https:\/\/itviec.com\/blog\/author\/tien-tran\/"}]}},"_links":{"self":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/85061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/users\/203"}],"replies":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/comments?post=85061"}],"version-history":[{"count":2,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/85061\/revisions"}],"predecessor-version":[{"id":88205,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/85061\/revisions\/88205"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media\/85252"}],"wp:attachment":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media?parent=85061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/categories?post=85061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/tags?post=85061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}