Trạng thái overlay cục bộ theo màn hình
Biểu diễn dialog và sheet bằng OverlayRequest? rồi render chúng qua ScreenOverlayHost hoặc AnimatedScreenOverlayHost.
Một vị trí overlay duy nhất
Mô hình hóa overlay bằng OverlayRequest? và xóa giá trị đó để đóng.
Hỗ trợ dialog và sheet
Dùng DialogRequest và BottomSheetRequest với dữ liệu payload tùy chọn.
Kiểm soát thứ tự quay lại
Đóng overlay trước, sau đó mới pop trang, thông qua các widget back-scope.
Mẫu Overlay Host
Giữ overlay trong state và dựng UI overlay thông qua overlayBuilder.
Quy tắc trạng thái overlay
Host lớp phủ động
return AnimatedScreenOverlayHost(
overlay: _overlay,
onDismiss: _dismissOverlay,
overlayBuilder: (context, req, dismiss) => switch (req) {
DialogRequest(key: 'hello') => AlertDialog(
title: const Text('Hello'),
actions: [TextButton(onPressed: dismiss, child: const Text('Close'))],
),
_ => null,
},
child: DeclarativePagesNavigator(
pages: _pages,
buildPage: _buildPage,
onPopTop: _popTop,
canPopTop: () => _overlay == null,
),
);
Quan trọng
Khi overlay đang hiển thị, hãy chặn cử chỉ pop bằng canPopTop để tránh hành vi vuốt quay lại không nhất quán trên iOS.
Trước đó
Trang và ResolverTiếp theo
Tab khai báo