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à Resolver

Tiếp theo

Tab khai báo