Ekranui lokali overlay būsena

Vaizduokite dialogus ir sheets su OverlayRequest? ir atvaizduokite juos per ScreenOverlayHost arba AnimatedScreenOverlayHost.

Vienas overlay lizdas

Modeliuokite overlay kaip OverlayRequest? ir išvalykite jį uždarymui.

Dialogų ir sheet'ų palaikymas

Naudokite DialogRequest ir BottomSheetRequest su pasirenkamais payload duomenimis.

Atgal eigos kontrolė

Pirmiausia uždarykite overlay, o tada popinkite puslapius per back-scope widgetus.

Overlay hosto šablonas

Laikykite overlay būsenoje ir kurkite overlay UI per overlayBuilder.

Overlay būsenos taisyklė

Animuotas overlay hostas

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,
  ),
);
Svarbu

Kai overlay matomas, blokuokite pop gestus su canPopTop kad išvengtumėte iOS back-swipe nenuoseklumo.