Ngôn ngữ lập trình Dart.
Nếu bạn đã từng học qua C++, Java hay C# ở trường, các bạn sẽ thấy Dart cực kỳ gần gũi và rất dễ học.
1. Tổng quan về ngôn ngữ Dart
Dart là một ngôn ngữ lập trình mã nguồn mở do chính Google phát triển và ra mắt lần đầu vào năm 2011. Mặc dù ban đầu được định hướng để thay thế JavaScript trên nền tảng web, nhưng ngày nay Dart nổi tiếng nhất với vai trò là "linh hồn" của framework Flutter, cho phép lập trình viên phát triển ứng dụng di động, web và desktop từ một nguồn code duy nhất.
Những điểm "ăn tiền" của Dart:
- Vừa biên dịch JIT vừa AOT: Trong lúc code, Dart dùng cơ chế JIT (Just-In-Time) để biên dịch cực nhanh, hỗ trợ tính năng Hot Reload hiển thị thay đổi ngay lập tức. Khi phát hành app, Dart dùng AOT (Ahead-Of-Time) để biên dịch code ra thẳng mã máy (ARM hoặc x64), giúp ứng dụng chạy mượt mà như app native.
- An toàn Null (Sound Null Safety): Dart áp dụng cơ chế ép buộc biến không được phép chứa giá trị
nulltrừ khi các em cho phép. Điều này giúp loại bỏ hoàn toàn nỗi ám ảnh lỗi "NullPointerException" khi app đang chạy.
2. Cú pháp và các thành phần cơ bản
Hàm main()
Cũng giống như C hay Java, mọi chương trình Dart đều bắt buộc phải bắt đầu từ hàm main(). Đây là cánh cửa đầu tiên để ứng dụng khởi chạy.
Khai báo biến (Variables)
Dart là ngôn ngữ có kiểu tĩnh, nhưng lại rất thông minh trong việc tự suy luận kiểu dữ liệu. Các bạn có thể chỉ định rõ kiểu dữ liệu như int (số nguyên), double (số thực), String (chuỗi), bool (đúng/sai) hoặc dùng từ khóa var để Dart tự đoán kiểu.
Lưu ý: Mọi câu lệnh trong Dart đều phải kết thúc bằng dấu chấm phẩy ;.
Hàm (Functions)
Trong Dart, các em có thể viết hàm truyền thống hoặc viết hàm cực kỳ ngắn gọn bằng cú pháp mũi tên => nếu hàm đó chỉ có một dòng code trả về giá trị.
Ví dụ minh họa cơ bản:
// 1. Hàm tính tổng hai số (dùng cú pháp mũi tên ngắn gọn)
int tinhTong(int a, int b) => a + b;
// 2. Hàm main khởi chạy chương trình
void main() {
// Khai báo biến có định kiểu rõ ràng
String loiChao = "Chào mừng các em sinh viên IT!";
int namHoc = 2024;
// Dùng 'var', Dart tự hiểu đây là số thập phân (double)
var diemTrungBinh = 8.5;
// In ra màn hình console
print(loiChao);
print("Năm học: $namHoc"); // Chèn biến vào chuỗi bằng dấu $
// Gọi hàm
int ketQua = tinhTong(5, 7);
print("Kết quả 5 + 7 = $ketQua");
}
3. Lập trình Hướng đối tượng (OOP) với Dart
Dart là một ngôn ngữ thuần hướng đối tượng (Object-Oriented Programming). Điều này có nghĩa là mọi thứ trong Dart (thậm chí cả số nguyên, hay chuỗi) đều là các đối tượng (Objects). Dart hỗ trợ đầy đủ các tính chất của OOP như: Lớp (Class), Kế thừa (Inheritance), và Đa hình (Polymorphism).
Dưới đây là một ví dụ minh họa cách tạo Class và Kế thừa trong Dart:
// Tạo một Class cơ sở (Class cha)
class Nguoi {
// Các thuộc tính
String ten;
int tuoi;
// Hàm khởi tạo (Constructor) viết cực kỳ ngắn gọn của Dart
Nguoi(this.ten, this.tuoi);
// Phương thức (Method)
void gioiThieu() {
print("Xin chào, tôi là $ten, $tuoi tuổi.");
}
}
// Lớp SinhVien kế thừa từ lớp Nguoi (dùng từ khóa extends)
class SinhVien extends Nguoi {
String maSV;
// Kế thừa Constructor của lớp cha dùng từ khóa super
SinhVien(String ten, int tuoi, this.maSV) : super(ten, tuoi);
// Ghi đè (Override) phương thức của lớp cha để thể hiện tính Đa hình
@override
void gioiThieu() {
print("Xin chào, em là sinh viên $ten (Mã SV: $maSV). Em $tuoi tuổi.");
}
}
void main() {
// Tạo đối tượng từ Class
Nguoi giangVien = Nguoi("Thầy Hùng", 35);
giangVien.gioiThieu(); // In ra: Xin chào, tôi là Thầy Hùng, 35 tuổi.
SinhVien sinhVien = SinhVien("An", 20, "SV12345");
sinhVien.gioiThieu(); // In ra: Xin chào, em là sinh viên An (Mã SV: SV12345). Em 20 tuổi.
}
Giải thích nhanh: Trong ví dụ trên, class SinhVien đã kế thừa (extends) lại các thuộc tính ten và tuoi từ class Nguoi. Dart cung cấp một cách viết hàm khởi tạo Constructor rất ưu việt là gán thẳng tham số vào thuộc tính this.ten giúp tiết kiệm rất nhiều dòng code.
📝 Bài tập củng cố
Để biến kiến thức vừa học thành kỹ năng của mình, các bạn hãy mở DartPad - công cụ chạy code Dart trực tuyến ngay trên trình duyệt, và thực hiện bài tập nhỏ sau:
Yêu cầu:
- Tạo một class có tên là
SanPham(Sản phẩm). - Class này có 3 thuộc tính:
tenSP(String),donGia(double), vàsoLuong(int). - Tạo một hàm khởi tạo (Constructor) để gán giá trị cho 3 thuộc tính này.
- Viết một phương thức
tinhTongTien()trả về kết quả làdonGia * soLuong. - Viết một phương thức
inThongTin()để in ra màn hình:"Sản phẩm: [tenSP] - Tổng tiền: [Kết quả của hàm tinhTongTien]". - Trong hàm
main(), hãy tạo 2 đối tượng sản phẩm bất kỳ (ví dụ: Điện thoại, Laptop) và gọi hàminThongTin()của từng đối tượng.
![Ngôn ngữ lập trình Dart [Phụ lục: Dart] [ Tự học Flutter] Ngôn ngữ lập trình Dart [Phụ lục: Dart] [ Tự học Flutter]](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOaPa6Msd48hLHILFQ8rw7R6q1VIWrC9-Mm8HYFcFVHC9GZwnABZXq2XD38Rla2TkemLqrepC4RW-Xy5Ad7AYGTae48e7-b9Sl0qneq2VIS_XtsicrPx7wZE78ju_sUM_xFPllh45jjGU8E1WZw8HM2PPnIzo8aRI1lDkmZkS9vLIZNnaUQHEkuYdSNddB/w640-h358-rw/unnamed%20(1).png)
![Tổng quan về Flutter [Phụ lục Flutter] [Tự học Flutter] Tổng quan về Flutter [Phụ lục Flutter] [Tự học Flutter]](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZiRf_bZqHhgJWKHbyTVqYPmF50ZMFggErrN10Yp_zpRr6z4nyTVk23sAoCHpYPaKOcHMMnFrBMuPHvimRQuTdzh7memmMy7pJj5aZFkMLUCmvUW5QPqGPKVdz6nPBm_GY8jUf4LEzfRS_8uQT1GtZaIIDiGkO8U7weexPGP0BS0cSeuRAMW-GMwlWOvM8/w640-h358-rw/unnamed.png)
![[Bài 1] Giới thiệu về Widget trong Flutter [Tự học Flutter] [Bài 1] Giới thiệu về Widget trong Flutter [Tự học Flutter]](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfuXzMuHawJJardwiNILeAzMjlLIewP-V5B_C3gAyQFWZWzz1_2UzJCNCXiTJzd79xBwu10tQIOyPMDo9ejivKY-Jr9_P4KSmcfbTM97ks2syE5iXys2szrKHAqCqDET5rjcJm58mpRNLEAg9rM6z0O250nPIkpbNoWDRj4_PBRPRkcATGS55UzmOcgT65/w640-h358-rw/unnamed.png)
.png)



.png)



