- dynamic và object là hai định nghĩa sẵn trong dart.
- dynamic là 1 loại định nghĩa động cho phép mọi loại kiểu khai báo biến, và bỏ kiểm tra kiểu khai báo.
- object là khai báo chấp nhận khai báo mọi loại kiểu biến và loại trừ null
Biến khai báo dynamic có thể gán cho mọi loại giá trị và những biến được khai báo dynamic cũng có thể gán cho mọi kiểu biến
void main() {
//dynamic variable assigned with string first
dynamic name = "john";
// you can assign dynamic variable to any variable
String fname = name;
}
Với một object, bạn có thể khai báo một biến dữ liệu bất kỳ.
Bạn cần ép kiểu khi sử dụng các biến khai báo object cho một loại biến khác
Ví dụ, vì một giá trị kiểu int là một kiểu con của một object, bạn có thể khai báo và gán một giá trị int. Vậy bạn muốn sử dụng một biến int, nhưng trước đó đã được khai báo bằng object thì bạn cần ép kiểu khi sử dụng như sau:
void main() {
Object age = 25;
int age1 = age as int;
}
Null values
Biến khai báo Dynamic có thể null, nhưng biến khai báo kiểu Object không cho phép null
main() {
dynamic str = null; // no errors
Object obj = null; // Compile time error
}
Truy vấn thuộc tính và phương thức
Khi bạn khởi tạo 1 instance của lớp Employee bằng kiểu dynamic, bạn có thể truy vấn đến các thuộc tính và phương thức của lớp Employee. Nhưng điều tương tự lại không được phép khi bạn sử dụng object
class Employee {
printEmp() => print("Employee Object");
}
void main() {
dynamic a = new Employee();
Object b = new Employee();
a.printEmp(); // No error
b.printEmp(); // Compile error
}