AlignedDialogRoute<T> constructor

AlignedDialogRoute<T>({
  1. required BuildContext context,
  2. required WidgetBuilder builder,
  3. required Alignment followerAlignment,
  4. required Offset position,
  5. CapturedThemes? themes,
  6. Color? barrierColor = Colors.transparent,
  7. bool barrierDismissible = true,
  8. String? barrierLabel,
  9. bool useSafeArea = false,
  10. RouteSettings? settings,
  11. RouteTransitionsBuilder? transitionsBuilder,
  12. Duration? duration,
  13. bool avoidOverflow = false,
  14. Offset offset = Offset.zero,
})

A dialog route with Material entrance and exit animations, modal barrier color, and modal barrier behavior (dialog is dismissible with a tap on the barrier).

Implementation

AlignedDialogRoute({
  required BuildContext context,
  required WidgetBuilder builder,
  required Alignment followerAlignment,
  required Offset position,
  CapturedThemes? themes,
  Color? barrierColor = Colors.transparent,
  bool barrierDismissible = true,
  String? barrierLabel,
  bool useSafeArea = false,
  RouteSettings? settings,
  RouteTransitionsBuilder? transitionsBuilder,
  Duration? duration,
  bool avoidOverflow = false,
  Offset offset = Offset.zero,
}) : super(
        pageBuilder: (BuildContext buildContext, Animation<double> animation,
            Animation<double> secondaryAnimation) {
          final Widget pageChild = Builder(builder: builder);
          Widget dialog = Builder(
            builder: (BuildContext context) {
              final MediaQueryData mediaQuery = MediaQuery.of(context);
              return CustomSingleChildLayout(
                delegate: _FollowerDialogRouteLayout(
                  followerAlignment,
                  position,
                  Directionality.of(context),
                  mediaQuery.padding.top,
                  mediaQuery.padding.bottom,
                  offset,
                  avoidOverflow,
                ),
                child: pageChild,
              );
            },
          );
          dialog = themes?.wrap(dialog) ?? dialog;
          if (useSafeArea) {
            dialog = SafeArea(child: dialog);
          }
          return dialog;
        },
        barrierDismissible: barrierDismissible,
        barrierColor: barrierColor,
        barrierLabel: barrierLabel ??
            MaterialLocalizations.of(context).modalBarrierDismissLabel,
        transitionDuration: duration ?? const Duration(milliseconds: 200),
        transitionBuilder:
            transitionsBuilder ?? _buildMaterialDialogTransitions,
        settings: settings,
      );