showAppBottomSheetPage<T> function

Future<T?> showAppBottomSheetPage<T>({
  1. required BuildContext context,
  2. required Widget child,
  3. String? title,
  4. Widget? titleWidget,
  5. Widget? footer,
  6. bool showCloseButton = true,
  7. VoidCallback? onCloseButton,
  8. AppSheetCloseSide closeSide = AppSheetCloseSide.end,
  9. double topPeek = kBottomSheetTopPeek,
  10. bool isDismissible = true,
  11. bool useRootNavigator = false,
  12. AppStyle? style,
  13. AppRadiusMode? radiusMode,
  14. bool scaleBelow = true,
})

Exibe um AppBottomSheetPage como modal (slide-up + barrier + swipe para baixo). Retorna o valor passado a Navigator.pop ou null se fechado.

Com useRootNavigator true, sobe no navigator raiz (cobre a bottom navigation). O roteamento fica no app; o DS não depende de router.

Implementation

Future<T?> showAppBottomSheetPage<T>({
  required BuildContext context,
  required Widget child,
  String? title,
  Widget? titleWidget,
  Widget? footer,
  bool showCloseButton = true,
  VoidCallback? onCloseButton,
  AppSheetCloseSide closeSide = AppSheetCloseSide.end,
  double topPeek = kBottomSheetTopPeek,
  bool isDismissible = true,
  bool useRootNavigator = false,
  AppStyle? style,
  AppRadiusMode? radiusMode,
  bool scaleBelow = true,
}) {
  return pushBottomSheet<T>(
    context: context,
    isDismissible: isDismissible,
    useRootNavigator: useRootNavigator,
    asPage: true,
    scaleBelow: scaleBelow,
    contentBuilder: (BuildContext context) => BottomSheetEngine(
      mode: BottomSheetMode.page,
      title: title,
      titleWidget: titleWidget,
      footer: footer,
      showCloseButton: showCloseButton,
      onCloseButton: onCloseButton,
      closeSide: closeSide,
      topPeek: topPeek,
      style: style,
      radiusMode: radiusMode,
      child: child,
    ),
  );
}