🎯 Mục tiêu:
- Hiểu cú pháp cơ bản của ngôn ngữ Dart
- Viết được hàm, class, sử dụng biến, list, map
- Nắm được async/await, null safety – cốt lõi khi làm Flutter

☕ 1. Dart là gì?
Dart là ngôn ngữ lập trình do Google phát triển, ra mắt năm 2011, thiết kế để:
- Chạy hiệu quả trên cả client (frontend) và server (backend)
- Dễ học, dễ đọc, cú pháp tương đồng với Java, JavaScript
- Biên dịch sang mã máy native (Android/iOS) hoặc JavaScript (Web)
Flutter chỉ sử dụng Dart nên bạn cần nắm vững cơ bản trước khi làm app.
💡 2. Cách chạy thử code Dart
⚡ Cách 1: Dùng DartPad (online)
👉 Truy cập: https://dartpad.dev
Chạy thử code Dart trực tiếp trên trình duyệt, không cần cài gì.
⚙️ Cách 2: Dùng dart
CLI (nếu đã cài Flutter)
dart create hello_dart
cd hello_dart
dart run
Hoặc tạo file riêng:
touch test.dart
dart test.dart
🧠 3. Biến & kiểu dữ liệu trong Dart
void main() {
String name = "Flutter";
int age = 5;
double height = 1.75;
bool isAwesome = true;
print("Hello $name, age: $age, height: $height, awesome: $isAwesome");
}
🔸 Từ khóa:
var
: tự suy luận kiểufinal
: gán một lần duy nhấtconst
: hằng số compile-time

🧮 4. Danh sách (List) & Map
List<String> fruits = ["apple", "banana", "mango"];
Map<String, int> scores = {"Alice": 90, "Bob": 85};
print(fruits[1]); // banana
print(scores["Alice"]); // 90
🔁 5. Hàm & vòng lặp
int add(int a, int b) {
return a + b;
}
void main() {
for (int i = 0; i < 3; i++) {
print("Loop $i");
}
print(add(2, 3)); // 5
}
🏗 6. Class & OOP cơ bản
class Person {
String name;
int age;
Person(this.name, this.age);
void sayHello() {
print("Hi, I'm $name, $age years old.");
}
}
void main() {
Person p = Person("Nam", 25);
p.sayHello();
}
⏳ 7. Async / Await – xử lý bất đồng bộ
Dart xử lý bất đồng bộ bằng Future
, tương tự Promise
trong JavaScript.
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2));
return "Data loaded!";
}
void main() async {
print("Loading...");
String result = await fetchData();
print(result);
}
⚠️ 8. Null Safety
Dart hỗ trợ null safety để tránh lỗi runtime do biến bị null
.
String? name; // có thể null
name = "Flutter";
if (name != null) {
print(name.length); // an toàn
}
🧪 9. Bài tập thực hành
✅ Bài tập 1:
Viết chương trình nhập tên & tuổi, in ra:
Chào Nam, bạn 25 tuổi!
✅ Bài tập 2:
Viết class Student
có tên, điểm số. Tạo 3 học sinh và in học sinh có điểm cao nhất.
✅ Bài tập 3:
Viết hàm async getWeather(city)
giả lập lấy thời tiết sau 2 giây → gọi hàm với 3 thành phố.
🎯 Tổng kết bài 2
Bạn đã học:
✅ Dart cơ bản: biến, hàm, class, async
✅ Cách chạy Dart bằng DartPad hoặc CLI
✅ Tư duy hướng đối tượng & bất đồng bộ → nền tảng để học Flutter

▶️ Bài tiếp theo: Giới thiệu Widget trong Flutter & tạo giao diện đầu tiên
Trong bài 3, chúng ta sẽ:
- Hiểu rõ
StatelessWidget
vàStatefulWidget
- Tạo UI đầu tiên bằng Flutter
- Dùng
Scaffold
,Text
,Icon
,ElevatedButton
,Row
,Column
Sign up