Constant constructor là một constructor sẽ tạo ra constant object, là một object không thay đổi. Constant object là object có giá trị không thay đổi. Sử dụng từ khoá const để khai báo.
Lưu ý: const giúp tạo object có giá trị không đổi vì vậy nó giúp cải thiện hiệu suất của chương trình.
Quy tắc:
Tấc cả properties trong class phải là final
Constant constructor không chứa body
Chỉ class chứa const constructor mới khởi tạo object có keyword const
Khai báo Constant constructor
void main() {
// Có dùng const thì 2 object sẽ có cùng hash code
var p1 = const Person("Elon Musk", 49);
var p2 = const Person("Elon Musk", 49);
print("The p1 hash code is ${p1.hashCode}");
print("The p2 hash code is ${p2.hashCode}");
// Không dùng const thì 2 object sẽ có hash code khác nhau
var p3 = Person("Donald Trump", 78);
var p4 = Person("Donald Trump", 78);
print("The p3 hash code is: ${p3.hashCode}");
print("The p4 hash code is: ${p4.hashCode}");
}
class Person {
final String name;
final int age;
const Person(this.name, this.age);
}
Kết quả
The p1 hash code is 94814997
The p2 hash code is 94814997
The p3 hash code is: 417683447
The p4 hash code is: 696146440
Ví dụ trên khi dùng const nếu object cùng dữ liệu sẽ chỉ tạo ra cùng một hashcode do đó sẽ tiết kiệm bộ nhớ, tăng hiệu suất. Lưu ý, Hash code của const object sinh ra ở lúc compile time và non-const object sinh ra lúc runtime.
Tạo Const Named Constructor
void main() {
const p1 = Person(name: 'Max', age: 30);
print(p1.name);
print(p1.age);
}
class Person {
final String? name;
final int? age;
const Person({this.name, this.age});
}