Làm quen với Dart – Ngôn ngữ lập trình dành riêng cho Flutter

🎯 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ểu
  • final: gán một lần duy nhất
  • const: 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 ScaffoldTextIconElevatedButtonRowColumn