Menu
CoddyTech

An toàn với null cơ bản

Thuộc phần Kiến thức cơ bản trong hành trình Dart của Coddy. Bài học 14 trên 94.

Tính an toàn với null giúp ngăn ứng dụng gặp sự cố bất ngờ bằng cách kiểm soát những biến nào có thể để trống (null).

Theo mặc định, biến phải chứa một giá trị:

void main() {
  String name = 'Dart';
  print(name);  // Đầu ra: Dart
  
  // Điều này sẽ gây ra lỗi:
  // name = null;  // Không được phép
}

Thêm ? sau kiểu dữ liệu để cho phép giá trị null:

void main() {
  String? name = 'Dart';
  print(name);  // In ra: Dart
  
  // Bây giờ ta có thể gán null
  name = null;
  print(name);  // In ra: null
}

Bạn có thể khai báo biến có thể nhận giá trị null với bất kỳ kiểu dữ liệu nào:

void main() {
  int? age;  // Chưa có giá trị ban đầu, mặc định là null
  double? price = 19.99;
  bool? isAvailable = true;
  
  print(age);         // In ra: null
  print(price);       // In ra: 19.99
  print(isAvailable); // In ra: true
  
  // Chúng ta có thể đổi bất kỳ giá trị nào trong số này thành null
  price = null;
  isAvailable = null;
}

 

Tính an toàn null (null safety) giúp bảo vệ ứng dụng khỏi những sự cố bất ngờ xảy ra khi code cố sử dụng giá trị null trong các phép toán.

challenge icon

Thử thách

Người mới

Tạo một chương trình Dart minh họa tính an toàn null cơ bản bằng toán tử ?:

  1. Khai báo một biến String tên là username và gán giá trị null cho biến bằng toán tử an toàn null ? (String?)
  2. Khai báo một biến int tên là userAge và gán giá trị null cho biến bằng toán tử an toàn null
  3. In cả hai biến kèm nhãn theo CHÍNH XÁC định dạng sau:
Username: null
User age: null

Sau đó:

  1. Gán giá trị "DartLearner" cho biến username
  2. Gán giá trị 25 cho biến userAge
  3. In lại cả hai biến theo CHÍNH XÁC định dạng như trước

Đầu ra của bạn phải khớp chính xác với định dạng ở trên.

Tự làm thử

void main() {
  // Khai báo các biến (variable) có thể nhận giá trị null ở đây
  String? username = ?;
  int? userAge = ?;
  
  // In các giá trị (value) ban đầu kèm nhãn
  print("Username: " + username.toString());
  print("User age: " + userAge.toString());
  
  // Gán giá trị mới cho các biến
  username = ?;
  userAge = ?;
  
  // In các giá trị đã cập nhật với cùng nhãn
  print("Username: " + username.toString());
  print("User age: " + userAge.toString());
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản

Tự luyện tập: Trình biên dịch Dart online