Null Safety là tính năng giúp ngăn chặn lỗi do các biến có giá trị rỗng (null) gây ra. Được áp dụng rộng rãi trong ngôn ngữ Dart (và framework Flutter), tính năng này giúp các nhà phát triển phát hiện lỗi ngay tại thời điểm biên dịch thay vì khi ứng dụng chạy, giúp ứng dụng ổn định và ít bị crash hơn.

Dart's Sound Null Safety. What is Null? | by Shivam | Medium

Dart áp dụng hai nguyên tắc chính để đảm bảo an toàn:

  • Mặc định không cho phép null (Non-nullable by default): Theo mặc định, tất cả các biến trong chương trình đều được coi là kiểu không thể nhận giá trị null. Điều này có nghĩa là một biến khai báo kiểu String sẽ luôn chứa một chuỗi ký tự hợp lệ.
  • Hoàn toàn an toàn (Fully sound): Tính năng này đảm bảo rằng nếu hệ thống xác định một thứ gì đó không phải là null, thì nó sẽ không bao giờ là null.

Các toán tử và từ khóa phổ biến. Để làm việc với các giá trị có thể là null, Dart cung cấp các công cụ cụ thể:

  • Dấu chấm hỏi (?): Dùng để khai báo một biến có thể nhận giá trị null.
  • Toán tử kiểm tra (!): Dùng để ép buộc Dart coi một biến có thể là null là không có giá trị null.
  • Toán tử gán mặc định (??): Dùng để trả về một giá trị mặc định nếu biến đó đang là null.
  • Từ khóa (late): Dùng để khai báo một biến chưa được khởi tạo giá trị ngay lúc khai báo nhưng chắc chắn sẽ được gán giá trị trước khi sử dụng.

Nói chung là:

  • String là mặc định ko null

ví dụ:

String name = "Tien"; 
  • Có ! cũng chắc chắn ko null

ví dụ:

String? name = "Tien";

print(name!);
  • String? có thể null

ví dụ:

String? name;
name = null;
  • Có ?? nếu ko null thì in ra biến

ví dụ:

String? name;

print(name ?? "ko có tên");
  • Có late mà sau đó ko gán giá trị thì cũng lỗi
ví dụ:
late String name;

name = "Tien";

print(name);

Bài viết khác

Language Switching trong Flutter

        Trong quá trình phát triển ứng dụng di động, khả năng hỗ trợ nhiều ngôn ngữ ngày càng trở nên quan trọng. Một ứng dụng chỉ sử dụng duy nhất một ngôn ngữ có thể gặp khó khăn khi tiếp cận người dùng ở các quốc gia và khu vực khác […]

UTC & Local Time Conversion

Trong thời đại toàn cầu hóa, con người thường xuyên làm việc, học tập và giao tiếp với những người ở các quốc gia khác nhau. Một cuộc họp trực tuyến có thể được tổ chức tại Việt Nam, nhưng người tham gia lại đang ở Hoa Kỳ, Anh, Nhật Bản hoặc Australia. Vì vậy, […]

Logging / Monitoring / CI/CD

1. Logging / Monitoring / CI/CD là gì? Trong quá trình phát triển phần mềm, việc viết code để ứng dụng chạy được chỉ là một phần của công việc. Khi đưa ứng dụng vào sử dụng thực tế, lập trình viên còn phải quan tâm đến nhiều vấn đề khác như ứng dụng có […]

Docker

1. Docker là gì? Docker là một nền tảng được sử dụng để đóng gói, triển khai và chạy ứng dụng trong các môi trường độc lập, được gọi là Container. Docker giúp lập trình viên đưa mã nguồn, thư viện, các gói phụ thuộc và những thành phần cần thiết để chạy ứng dụng […]

Unit Testing và Integration Testing

1. Unit Testing và Integration Testing là gì? Unit Testing và Integration Testing là hai phương pháp kiểm thử phần mềm thường được sử dụng trong quá trình phát triển ứng dụng. Mục đích của hai phương pháp này là kiểm tra xem chương trình có hoạt động đúng theo yêu cầu hay không, đồng […]

Message Broker

1. Message Broker là gì? Message Broker là một thành phần trung gian được sử dụng để tiếp nhận, quản lý và chuyển tiếp thông điệp giữa các ứng dụng hoặc các thành phần trong một hệ thống phần mềm. Công nghệ này thường xuất hiện trong những hệ thống Backend, kiến trúc Microservices và […]

Leave a Reply

Your email address will not be published. Required fields are marked *