showModalBottomSheet<T> static method

Future<T?> showModalBottomSheet<T>({
  1. required BuildContext context,
  2. required WidgetBuilder builder,
  3. required Color backgroundColor,
  4. double heightFactor = 0.5,
  5. EdgeInsetsGeometry padding = const EdgeInsets.only(top: 19),
  6. AxisDirection animationDirection = AxisDirection.up,
  7. RouteSettings? routeSettings,
  8. bool isDismissible = true,
  9. Color? modalBarrierColor,
  10. bool enableDrag = true,
  11. bool useSafeArea = false,
  12. List<BoxShadow>? boxShadow,
})

Shows a customizable modal bottom sheet.

This is a helper method that wraps Navigator.of(context).push with a pre-configured BrowserSwipePopupRoute for common bottom sheet behavior.

Implementation

static Future<T?> showModalBottomSheet<T>({
  required BuildContext context,
  required WidgetBuilder builder,
  required Color backgroundColor,
  double heightFactor = 0.5,
  EdgeInsetsGeometry padding = const EdgeInsets.only(top: 19),
  AxisDirection animationDirection = AxisDirection.up,
  RouteSettings? routeSettings,
  bool isDismissible = true,
  Color? modalBarrierColor,
  bool enableDrag = true,
  bool useSafeArea = false,
  List<BoxShadow>? boxShadow,
}) => Navigator.of(context).push<T>(
  BrowserSwipePopupRoute<T>(
    settings: routeSettings,
    traceRoute: SwipeTraceRoute(
      useSafeArea: useSafeArea,
      enableDrag: enableDrag,
      barrierColor: modalBarrierColor,
      barrierDismissible: isDismissible,
      screenMaximumPercentage: heightFactor,
      animationDirection: animationDirection,
    ),
    appRoute: BrowserRoute(
      path: '',
      page: Container(
        padding: padding,
        decoration: BoxDecoration(
          color: backgroundColor,
          boxShadow: boxShadow,
        ),
        child: Builder(
          builder: (context) {
            return builder.call(context);
          },
        ),
      ),
      routeTransition: RouteTransition.none,
    ),
  ),
);