Vietinė ekrano perdangų būsena

Vaizduokite dialogus ir apatinius langus (sheets) su „OverlayRequest?“ ir atvaizduokite juos naudodami „ScreenOverlayHost“ arba „AnimatedScreenOverlayHost“.

Vienas perdangos lizdas

Modeliuokite perdangą kaip „OverlayRequest?“ ir išvalykite ją, kad uždarytumėte.

Dialogų ir apatinių langų palaikymas

Naudokite „DialogRequest“ ir „BottomSheetRequest“ su papildomais duomenimis (payload).

Grįžimo tvarkos valdymas

Pirmiausia uždarykite perdangą, o tada pašalinkite puslapius iš steko naudodami grįžimo srities valdiklius.

Perdangos hosto šablonas

Išlaikykite perdangos būseną ir kurkite perdangos UI naudodami „overlayBuilder“.

Perdangos būsenos taisyklė

Animuotas perdangos 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 perdanga matoma, blokuokite puslapio pašalinimo iš steko gestus su canPopTop kad išvengtumėte „iOS“ grįžimo braukiant gestu (back-swipe) nenuoseklumo.