สถานะโอเวอร์เลย์เฉพาะหน้าจอ
นำเสนอ dialogs และ sheets ด้วย OverlayRequest? และแสดงผลผ่าน ScreenOverlayHost หรือ AnimatedScreenOverlayHost.
ช่อง overlay เดียว
จำลอง overlay เป็น OverlayRequest? และล้างมันเพื่อลบออก.
รองรับ dialog และ sheet
ใช้ DialogRequest และ BottomSheetRequest พร้อม payload data แบบเลือกได้.
ควบคุมลำดับ back
ปิด overlay ก่อน แล้วค่อย pop หน้า ผ่าน back-scope widgets.
แพตเทิร์น overlay host
เก็บ overlay ไว้ใน state และสร้าง UI ของ overlay ผ่าน overlayBuilder.
กฎสถานะของ overlay
โฮสต์โอเวอร์เลย์แบบแอนิเมชัน
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,
),
);
Important
เมื่อ overlay แสดงอยู่, บล็อก pop gestures ด้วย canPopTop เพื่อหลีกเลี่ยงความไม่สอดคล้องของ back-swipe บน iOS.
ก่อนหน้า
หน้าเป็นข้อมูลถัดไป
การจัดการย้อนกลับ