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;

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