Menu
CoddyTech

Cheat sheet Dart

Cập nhật lần cuối

Hello World và cấu trúc chương trình

Mọi chương trình Dart đều bắt đầu từ hàm main ở cấp cao nhất.

Thao tácCú pháp
Điểm bắt đầu chương trìnhvoid main() { ... }
In một dòngprint("Hello, World!");
Nội suy chuỗiprint("Hi $name");
Biểu thức trong nội suyprint("Sum: ${a + b}");
Chú thích// this is a comment
Chú thích nhiều dòng/* ... */
Import một thư việnimport 'dart:math';
Chạy một tệpdart run main.dart

Biến và kiểu dữ liệu

Dart là ngôn ngữ kiểu tĩnh nhưng có thể tự suy ra kiểu khi dùng var.

Thao tácCú pháp
Biến tự suy ra kiểuvar age = 30;
Khai báo kiểu tường minhint age = 30;
Hằng số lúc biên dịchconst pi = 3.14;
Hằng số lúc chạyfinal name = getName();
Kiểu cơ bảnint, double, String, bool
Kiểu độngdynamic x = 5;
Chuyển đổi kiểuint.parse("42"), n.toString()
Kiểm tra kiểux is String, x as String

Null safety

Mặc định các kiểu không nhận null; thêm ? để cho phép null.

Thao tácCú pháp
Không nhận null (mặc định)int count = 0;
Kiểu có thể nullString? name;
Truy cập an toàn với nulluser?.name
Toán tử gộp nullname ?? "default"
Gán khi đang nullname ??= "default";
Khẳng định khác nullname!
Khởi tạo muộnlate String value;
Spread an toàn với null[...?maybeList]

Chuỗi

Chuỗi dùng được dấu nháy đơn, nháy kép và ba dấu nháy.

Thao tácCú pháp
Độ dàis.length
Chữ hoa / chữ thườngs.toUpperCase(), s.toLowerCase()
Nội suy"Total: $price"
Nối chuỗi"foo" + "bar"
Kiểm tra có chứas.contains("ell")
Bắt đầu / kết thúc bằngs.startsWith("he")
Tách chuỗi"a,b,c".split(",")
Thay thếs.replaceAll("a", "b")
Chuỗi cons.substring(0, 3)
Xóa khoảng trắng hai đầus.trim()

Collection (List, Map, Set)

Ba kiểu collection cốt lõi, đều có cú pháp literal.

Thao tácCú pháp
Tạo list bằng literalvar nums = [1, 2, 3];
Thêm vào listnums.add(4);
Truy cập / độ dàinums[0], nums.length
Map / wherenums.map((n) => n * 2), nums.where((n) => n > 1)
Tạo map bằng literalvar ages = {"Ada": 30};
Truy cập mapages["Ada"]
Tạo set bằng literalvar ids = {1, 2, 3};
Toán tử spreadvar all = [...a, ...b];
If / for trong collection[if (show) 1, for (n in xs) n]

Luồng điều khiển

Điều kiện đặt trong dấu ngoặc đơn; switch hỗ trợ pattern.

Thao tácCú pháp
If / elseif (x > 0) { ... } else { ... }
Toán tử ba ngôivar r = x > 0 ? "pos" : "neg";
Switchswitch (n) { case 1: ...; default: ... }
Vòng lặp forfor (var i = 0; i < 10; i++) { ... }
Vòng lặp for-infor (var item in items) { ... }
forEachitems.forEach((x) => print(x));
Vòng lặp whilewhile (x < 100) { ... }
Do-whiledo { ... } while (x < 100);
Break / continuebreak;, continue;

Hàm

Hàm là first-class; cú pháp mũi tên rút gọn các hàm chỉ có một biểu thức.

Thao tácCú pháp
Định nghĩa hàmint add(int a, int b) { return a + b; }
Hàm mũi tênint square(int x) => x * x;
Tham số vị trí tùy chọnvoid log(String m, [int? code]) { ... }
Tham số có tênvoid box({int w = 0, int h = 0}) { ... }
Tham số có tên bắt buộcvoid box({required int w}) { ... }
Hàm ẩn danhvar f = (x) => x * 2;
Truyền hàm làm đối sốnums.map((n) => n * 2)
Typedeftypedef IntOp = int Function(int);

Lớp và hàm khởi tạo

Lớp chứa trạng thái và hành vi; hàm khởi tạo có nhiều dạng.

Thao tácCú pháp
Định nghĩa lớpclass Point { int x; int y; }
Hàm khởi tạoPoint(this.x, this.y);
Hàm khởi tạo có tênPoint.origin() : x = 0, y = 0;
Tạo instancevar p = Point(1, 2);
Phương thứcdouble dist() { ... }
Getterint get area => w * h;
Kế thừaclass Circle extends Shape { ... }
Gọi lớp chasuper(args)
Lớp trừu tượngabstract class Shape { ... }
Triển khai interfaceclass Dog implements Animal { ... }

Async (Future / async-await)

Future đại diện cho giá trị sẽ có sau; await tạm dừng cho đến khi future hoàn tất.

Thao tácCú pháp
Hàm asyncFuture<int> load() async { ... }
Chờ một futurevar data = await load();
Trả về giá trịreturn 42; bên trong hàm async
Trì hoãnawait Future.delayed(Duration(seconds: 1));
Xử lý lỗitry { await load(); } catch (e) { ... }
Nối chuỗi bằng thenload().then((v) => print(v));
Chạy song songawait Future.wait([a(), b()]);
Stream bất đồng bộawait for (var x in stream) { ... }

Cú pháp Dart mà bạn cần nhiều nhất, gom trong một trang. Cheat sheet Dart này là bảng tra cứu nhanh cho phần cốt lõi của ngôn ngữ: biến và kiểu dữ liệu, null safety, chuỗi, collection, luồng điều khiển, hàm, lớp, cùng future và async/await mà bạn dùng để viết các ứng dụng Flutter.

Mọi thứ ở đây đều là Dart chuẩn và chạy trên SDK chính thức. Sao chép phần bạn cần, hoặc chạy thử từng đoạn code ngay trong playground Dart, không cần cài đặt gì.

Câu hỏi thường gặp về cheat sheet Dart

Cheat sheet Dart này có miễn phí không?

Có. Cheat sheet Dart này hoàn toàn miễn phí, không cần đăng ký. Lưu trang lại và quay lại bất cứ khi nào bạn cần tra một toán tử null safety, phương thức collection hay mẫu async.

Null safety trong Dart hoạt động thế nào?
Trong Dart, mọi kiểu mặc định đều không nhận null: int count không bao giờ chứa được null. Để cho phép null, bạn thêm ? (String? name), và trình biên dịch sẽ buộc bạn xử lý trường hợp null. Các toán tử hỗ trợ giúp code gọn: ?. để truy cập an toàn với null, ?? để lấy giá trị dự phòng, và ! để khẳng định giá trị khác null khi bạn chắc chắn. Nhờ vậy lỗi null được phát hiện lúc biên dịch thay vì lúc chạy.
Future là gì, async và await hoạt động thế nào?
Một Future đại diện cho giá trị sẽ có sau, chẳng hạn kết quả của một lời gọi mạng. Đánh dấu hàm là async cho phép bạn dùng await, tạm dừng thực thi cho đến khi future hoàn tất rồi trả về giá trị. Nhờ vậy code bất đồng bộ đọc từ trên xuống dưới như code đồng bộ. Đặt các lệnh await trong try/catch để xử lý lỗi.
Có thể luyện tập Dart online không?

Có. Mở playground Dart để chạy bất kỳ đoạn code nào trong cheat sheet này ngay trên trình duyệt, không cần cài SDK. Khi muốn học có lộ trình, khóa học Dart tương tác miễn phí của Coddy đưa bạn đi từng bước từ null safety và collection đến lớp và async/await.

Cheat sheet này có phù hợp cho người mới bắt đầu không?

Có. Nội dung được sắp xếp từ những chủ đề hay dùng nhất (biến, null safety, luồng điều khiển) đến phần nâng cao (lớp, future, async/await), nên bạn có thể dùng các phần đầu ngay từ ngày đầu tiên rồi dần làm chủ phần còn lại.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học Dart cùng Coddy

Bắt đầu