Superpositions

Représentez les boîtes de dialogue et les volets avec OverlayRequest? et affichez-les via ScreenOverlayHost ou AnimatedScreenOverlayHost.

Un seul emplacement d'overlay

Modélisez la superposition en tant que OverlayRequest? et effacez-la pour la fermer.

Prise en charge des boîtes de dialogue et des volets

Utilisez DialogRequest et BottomSheetRequest avec des données de charge utile facultatives.

Contrôle de l'ordre de retour

Fermez d'abord la superposition, puis retirez les pages via les widgets de portée de retour.

Modèle d'overlay host

Conservez la superposition dans l'état et construisez son interface utilisateur via overlayBuilder.

Règle d'état d'overlay

Overlay host animé

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

Quand la superposition est visible, bloquez les gestes de retour avec canPopTop pour éviter les incohérences de balayage de retour sur iOS.