Trong Flutter, double.infinityMediaQuery là hai khái niệm khác nhau với mục đích và ứng dụng khác nhau trong việc phát triển giao diện người dùng. Dưới đây là sự khác biệt giữa chúng:

1. double.infinity

double.infinity là một hằng số trong Dart (ngôn ngữ lập trình được sử dụng trong Flutter) và được định nghĩa trong lớp double. Hằng số này đại diện cho một giá trị vô hạn dương.

Sử dụng:

  • Kích thước không giới hạn: double.infinity thường được sử dụng khi bạn cần một kích thước hoặc giá trị không giới hạn trong các tình huống như kích thước của widget, hoặc để tạo ra các ranh giới không hạn chế trong layout.
  • Chỉ định kích thước: Ví dụ, bạn có thể sử dụng double.infinity để chỉ định rằng một widget sẽ mở rộng đến chiều rộng hoặc chiều cao tối đa có thể có trong layout.

Ví dụ:

Container(
  width: double.infinity, // Chiều rộng sẽ mở rộng đến hết không gian có sẵn
  height: 100.0,
  color: Colors.blue,
)

2. MediaQuery

MediaQuery là một widget trong Flutter cung cấp thông tin về kích thước và các đặc tính của màn hình mà ứng dụng đang chạy. Nó cho phép bạn truy cập các thông tin như kích thước màn hình, độ phân giải, hướng màn hình, và các thông số khác của thiết bị.

Sử dụng:

  • Thông tin về màn hình: MediaQuery thường được sử dụng khi bạn cần biết kích thước của màn hình hoặc các thuộc tính khác để điều chỉnh giao diện người dùng của ứng dụng.
  • Responsive Design: Khi xây dựng các ứng dụng phản hồi, bạn có thể sử dụng MediaQuery để tính toán và điều chỉnh kích thước và vị trí của các widget dựa trên kích thước màn hình hiện tại.

Ví dụ:

// Lấy kích thước màn hình
final size = MediaQuery.of(context).size;
final width = size.width; // Chiều rộng của màn hình
final height = size.height; // Chiều cao của màn hình

Container(
  width: width * 0.5, // Sử dụng một nửa chiều rộng của màn hình
  height: 100.0,
  color: Colors.red,
)

Kết luận

  • double.infinity là một hằng số đại diện cho giá trị vô hạn, chủ yếu được sử dụng để chỉ định kích thước không giới hạn trong layout.
  • MediaQuery là một widget cung cấp thông tin về kích thước và các thuộc tính của màn hình, cho phép bạn xây dựng giao diện người dùng phản hồi và điều chỉnh kích thước widget dựa trên thông số của thiết bị.

Hai khái niệm này có thể được sử dụng cùng nhau trong một ứng dụng Flutter, nhưng chúng phục vụ những mục đích rất khác nhau.