showDialogWithAnimation function

void showDialogWithAnimation(
  1. BuildContext context, {
  2. bool barrierDismissible = false,
  3. String? barrierLabel,
  4. Color? barrierColor,
  5. Duration transitionDuration = const Duration(milliseconds: 200),
  6. DialogAnimationType animType = DialogAnimationType.curveEaseInOutBack,
  7. required Widget dialog,
})

Show dialog with some animation

Implementation

void showDialogWithAnimation(
  BuildContext context, {
  bool barrierDismissible = false,
  String? barrierLabel,
  Color? barrierColor,
  Duration transitionDuration = const Duration(milliseconds: 200),
  DialogAnimationType animType = DialogAnimationType.curveEaseInOutBack,
  required Widget dialog,
}) {
  showGeneralDialog(
    context: context,
    pageBuilder: (context, anim1, anim2) => dialog,
    barrierDismissible: barrierDismissible,
    barrierLabel: barrierLabel,
    barrierColor: barrierColor ?? const Color(0x80000000),
    transitionDuration: transitionDuration,
    transitionBuilder: (context, anim1, anim2, child) {
      if (animType == DialogAnimationType.curveEaseInOutBack) {
        final curveValue = Curves.easeInOutBack.transform(anim1.value) - 1.0;
        return Transform(
          transform: Matrix4.translationValues(0.0, curveValue * 200, 0.0),
          child: Opacity(
            opacity: anim1.value,
            child: dialog,
          ),
        );
      } else if (animType == DialogAnimationType.scale) {
        return Transform.scale(
          scale: anim1.value,
          child: Opacity(
            opacity: anim1.value,
            child: dialog,
          ),
        );
      } else {
        return dialog;
      }
    },
  );
}