ModalRouteTheme.fromRoute constructor

ModalRouteTheme.fromRoute(
  1. BuildContext context,
  2. TypeSafeModalRoute route
)

Implementation

factory ModalRouteTheme.fromRoute(
  BuildContext context,
  TypeSafeModalRoute route,
) {
  final routeTheme =
      PipenTheme.maybeOf(context)?.themes.routeTheme ??
      ModalRouteTheme.styleFrom();

  // Padding
  EdgeInsets padding =
      route is RouteZeroPadding ? EdgeInsets.zero : routeTheme.padding;
  if (route case RoutePadding customPadding) padding = customPadding.padding;

  // Barrier dismissible
  final barrierDismissible =
      route is RouteFixed ? true : routeTheme.barrierDismissible;

  // Border radius
  BorderRadius borderRadius = routeTheme.borderRadius;
  if (route case RouteBorderRadius routeBorderRadius) {
    borderRadius = BorderRadius.circular(routeBorderRadius.borderRadius);
  }

  // Margin
  EdgeInsets margin = routeTheme.margin;
  if (route case RouteMargin routeInsetPadding) {
    margin = routeInsetPadding.margin(context);
  }

  // Transition
  RouteTransitionBuilder transition = routeTheme.transition;
  if (route case RouteTransition routeTransition) {
    transition = routeTransition.transitionBuilder;
  }

  // Width
  final width = routeTheme.width;

  // Background color
  final backgroundColor = routeTheme.backgroundColor;

  return ModalRouteTheme(
    width: width,
    padding: padding,
    transition: transition,
    margin: margin,
    backgroundColor: backgroundColor,
    borderRadius: borderRadius,
    barrierDismissible: barrierDismissible,
  );
}