showAppSideSheetPage<T> function

Future<T?> showAppSideSheetPage<T>({
  1. required BuildContext context,
  2. required Widget child,
  3. AppSheetSide side = AppSheetSide.end,
  4. String? title,
  5. Widget? titleWidget,
  6. Widget? footer,
  7. bool draggable = false,
  8. bool alwaysClose = false,
  9. bool showHandle = false,
  10. bool showCloseButton = true,
  11. AppSheetCloseSide? closeSide,
  12. VoidCallback? onCloseButton,
  13. VoidCallback? onClose,
  14. double mediumFraction = kSideSheetMediumFraction,
  15. double largeFraction = kSideSheetLargeFraction,
  16. double edgePeek = kSideSheetEdgePeek,
  17. AppSideSheetSnap initialSnap = AppSideSheetSnap.rest,
  18. bool isDismissible = true,
  19. bool useRootNavigator = false,
  20. AppStyle? style,
  21. bool? glass,
  22. AppRadiusMode? radiusMode,
})

Exibe um AppSideSheetPage como page-route (slide da borda side + barrier). Igual a showAppSideSheet, mas a sheet é uma SideSheetPageRoute (um PageRoute persistente) em vez de uma SideSheetRoute efêmera.

Reusa o mesmo SideSheetEngine — logo drag/snaps (40% → 70% → full), handle, closeSide, title e footer funcionam igual. onClose dispara ao fechar por qualquer meio.

Implementation

Future<T?> showAppSideSheetPage<T>({
  required BuildContext context,
  required Widget child,
  AppSheetSide side = AppSheetSide.end,
  String? title,
  Widget? titleWidget,
  Widget? footer,
  bool draggable = false,
  bool alwaysClose = false,
  bool showHandle = false,
  bool showCloseButton = true,
  AppSheetCloseSide? closeSide,
  VoidCallback? onCloseButton,
  VoidCallback? onClose,
  double mediumFraction = kSideSheetMediumFraction,
  double largeFraction = kSideSheetLargeFraction,
  double edgePeek = kSideSheetEdgePeek,
  AppSideSheetSnap initialSnap = AppSideSheetSnap.rest,
  bool isDismissible = true,
  bool useRootNavigator = false,
  AppStyle? style,
  bool? glass,
  AppRadiusMode? radiusMode,
}) {
  final Future<T?> result = pushSideSheet<T>(
    context: context,
    side: side,
    isDismissible: isDismissible,
    useRootNavigator: useRootNavigator,
    asPage: true,
    contentBuilder: (BuildContext context) => SideSheetEngine(
      side: side,
      draggable: draggable,
      alwaysClose: alwaysClose,
      showHandle: showHandle,
      showCloseButton: showCloseButton,
      closeSide: closeSide,
      onCloseButton: onCloseButton,
      title: title,
      titleWidget: titleWidget,
      footer: footer,
      mediumFraction: mediumFraction,
      largeFraction: largeFraction,
      edgePeek: edgePeek,
      initialSnap: initialSnap,
      style: style,
      glass: glass,
      radiusMode: radiusMode,
      child: child,
    ),
  );
  return onClose == null ? result : result.whenComplete(onClose);
}