Giới thiệu nhanh
Xin chào! Mình là Coder Tập Sự một người mới bắt đầu học lập trình di động. Từ hôm nay, mình sẽ ghi lại hành trình học Flutter từng ngày để vừa ghi nhớ kiến thức vừa để xem mình tiến bộ tới đâu. Vì mình chỉ mới bắt đầu tìm hiểu nên nếu có chỗ nào chưa chính xác hoặc còn thiếu sót, rất mong mọi người góp ý thêm để mình cải thiện. Mình rất trân trọng mọi lời nhận xét và chia sẻ kinh nghiệm từ các anh/chị và các bạn. Xin cảm ơn mọi người rất nhiều!
1. Mục tiêu hôm nay là gì?
- Làm quen với ngôn ngữ Dart – nền tảng của Flutter
- Hiểu cách khai báo biến, viết hàm, và tạo class
- Thử viết một vài đoạn code đơn giản bằng DartPad
2. Bắt đầu
Biến và kiểu dữ liệu
Dart là ngôn ngữ kiểu tĩnh, tức là mỗi biến đều có kiểu dữ liệu cụ thể (giống như int, String, bool, double...).
👉️ Tuy nhiên, bạn không cần phải luôn viết rõ kiểu — Dart có thể tự đoán kiểu dựa vào giá trị ban đầu bạn gán, nhờ đó code ngắn gọn hơn.
// Khai báo biến với việc chỉ rõ kiểu dữ liệu
int age = 22;
String name = "Luân"; // Dart có thể tự động dự đoán kiểu dữ liệu nếu chúng ta khai báo bằng Var. Ví dụ như sau
var city = "Hà Nội"; // Dart hiểu đây là String
var score = 9.5; // Dart hiểu là double
var isStudent = true; // Dart hiểu là bool
❗️ Lưu ý: Khi bạn đã gán giá trị ban đầu, Dart sẽ không cho thay đổi kiểu của biến đó nữa.
Hàm trong Dart
Trong Dart chúng ta có thể khai báo hàm để có thể tái sử dụng logic một cách dễ dàng. Trong Dart, chúng ta có thể khai báo kiểu dữ liệu trả về của hàm, điều này giúp tránh lỗi và làm cho code dễ hiểu hơn.
Hàm trả về giá trị
Khi một hàm trả về một giá trị (như số, chuỗi, danh sách...), chúng ta cần ghi kiểu dữ liệu trả về phía trước tên hàm.
int sum(int a, int b) { return a + b;
} void main() { int result = sum(3, 5); print("Tổng: $result");
} Kết quả nhận được: Tổng: 8
Hàm không trả về giá trị (dùng void)
Nếu hàm chỉ thực hiện hành động mà không trả về gì, chúng ta dùng void.
void sayHello(String name) { print("Xin chào, $name!");
} void main() { sayHello("Luân");
} Kết quả nhận được: Xin chào, Luân!
Hàm viết ngắn gọn với cú pháp mũi tên (=>)
Nếu hàm chỉ có một câu lệnh duy nhất và trả về, chúng ta có thể viết gọn bằng cú pháp =>:
int square(int n) => n * n; void main() { print(square(4));
} Kết quả nhận được: 16
⚠️ Ghi nhớ:
- Chúng ta nên luôn khai báo rõ kiểu trả về để tránh lỗi và rõ ràng dễ hiểu hơn
- Dùng
void
khi không cần trả về gì - Dùng cú pháp ngắn
=>
cho những hàm đơn giản
Class trong Dart
Dart hỗ trợ lập trình hướng đối tượng, tức là chúng ta có thể tạo class để mô tả các đối tượng như người, sản phẩm, v.v...
class Person { String name; int age; // Constructor Person(this.name, this.age); // Method void introduce() { print("Mình tên là $name, năm nay $age tuổi."); }
} void main() { Person p = Person("Luân", 22); p.introduce();
} Kết quả nhận lại: Mình tên là Luân, năm nay 22 tuổi.
Vấn đề đã gặp và cách xử lý
Dart áp dụng null safety — nghĩa là:
Biến không thể có giá trị null nếu chúng ta không khai báo rõ ràng là nó có thể null.
Ví dụ:
String name = "Luân";
name = null; // Error: The value 'null' can't be assigned to a variable of type 'String' because 'String' is not nullable.
Vậy làm sao để cho phép null?
Chúng ta có thể sử dụng dấu ? sau tên kiểu:
String? name = "Luân"; print("Name: $name"); // Kết quả: Name: Luân name = null; print("Name: $name"); // Kết quả: Name: null
Tuy nhiên chúng ta cần cẩn thận khi sử dụng biến có thể null
Vì biến có thể null, nên chúng ta phải kiểm tra null trước khi dùng, hoặc dùng toán tử an toàn như !
hoặc ??
. Ví dụ:
void hello(String? name) { print("Xin chào, ${name ?? "bạn"}!");
} void main() { hello(null); // Kết quả: Xin chào, bạn! hello("Luân"); // Kết quả: Xin chào, Luân!
}
Kết luận
Qua bài học ngày hôm nay mình nhận thấy Dart có cú pháp khá dễ hiểu và thân thiện. Ngày mai mình sẽ tiếp tục tìm hiểu flutter nữa có thể là bắt đầu làm quen với Flutter Widgets hoặc khởi tạo chút giao diện cơ bản đầu tiên nhỉ 😆😆😆
Lời cuối bài xin cảm ơn mọi người đã đọc đến đây! Nếu mọi người cũng đang tìm hiểu Flutter thì mình chúc các bạn kiên trì và vững bước mỗi ngày. Hẹn gặp lại mọi người ở bài viết ngày mai nhé.