Một thẻ có nút mở chi tiết và lớp phủ xuất hiện khi thao tác đang xử lý. Phần nhìn đã tối đi, nhưng yêu cầu là thao tác chạm tại vùng thẻ không kích hoạt nút. Cần mô tả rõ hành vi hit test thay vì dựa vào màu lớp phủ.
Ví dụ và cách đọc
Đoạn tích hợp đặt hai child trong Stack có kích thước xác định. Lớp phủ đứng sau trong danh sách nên nằm phía trên nút, với StackFit.expand để phủ toàn vùng. AbsorbPointer hấp thụ hit test trong vùng đó khi được bật. Nếu dùng IgnorePointer cho lớp trên, lớp đó bị bỏ qua trong hit test và mục tiêu dưới có thể nhận chạm.
import 'package:flutter/material.dart';
Widget preview({required bool blocked, required VoidCallback onOpen}) {
return SizedBox(
width: 220,
height: 100,
child: Stack(
fit: StackFit.expand,
children: [
FilledButton(onPressed: onOpen, child: const Text('Mở chi tiết')),
if (blocked)
const AbsorbPointer(
child: ColoredBox(color: Color(0x55000000)),
),
],
),
);
}
Kiểm tra kết quả
Đưa widget vào màn hình Material hiện có và truyền callback tăng bộ đếm. Thử khi blocked=false, chạm nút và kiểm tra bộ đếm tăng. Bật blocked=true, chạm giữa thẻ và gần các cạnh để kiểm tra lớp phủ thực sự bao trọn vùng muốn khóa. Thử mở lại sau khi trạng thái đổi. Đây là kế hoạch kiểm tra theo API Flutter đọc ngày 13/11/2026, chưa chạy SDK hoặc thiết bị.
Áp dụng và giới hạn
Với form có điều hướng bằng bàn phím, kiểm tra focus và thao tác kích hoạt riêng. Nếu nút thật sự không dùng được trong lúc xử lý, truyền trạng thái đó cho nút và xử lý điều kiện ở callback nghiệp vụ phù hợp. Tài liệu API hiện hành mô tả các hành động semantics liên quan pointer bị loại khi hấp thụ. Kiểm tra trợ năng trên phiên bản dự án và tránh suy ra rằng lớp phủ tự giải quyết mọi đường kích hoạt.
Tình huống áp dụng
Khi ghép với trạng thái tải, truyền blocked từ nơi sở hữu yêu cầu. Chẳng hạn sau khi bấm Mở chi tiết, màn hình chuyển sang đang chờ và chỉ mở lại khi có kết quả hoặc lỗi. Kiểm tra cả đường lỗi để bảo đảm lớp phủ không nằm mãi trên thẻ. Nếu chỉ muốn chặn nút bên trong thẻ, chọn kích thước của Stack theo thẻ thay vì phủ toàn màn hình.
Trong test widget của dự án, dùng callback tăng số đếm và xác nhận sau từng lần tap. Với lớp phủ nằm trên nút, hit test của test có thể báo rằng vị trí không trỏ đến nút. Đây chính là tình huống cần kiểm tra bằng tọa độ vùng thẻ, kết hợp assertion về số lần gọi. Để kiểm tra trợ năng, bật trình đọc màn hình và thử đi tới nút trong trạng thái khóa. Điều chỉnh semantics và focus theo hợp đồng giao diện của dự án.


