dialogAnimatedWrapperWidget function
Widget
dialogAnimatedWrapperWidget({
- required Animation<
double> animation, - required Widget child,
- required DialogAnimation dialogAnimation,
- required Curve curve,
Widget wrapper for animated dialog transitions.
Implementation
Widget dialogAnimatedWrapperWidget({
required Animation<double> animation,
required Widget child,
required DialogAnimation dialogAnimation,
required Curve curve,
}) {
switch (dialogAnimation) {
// Animation for rotating the dialog.
case DialogAnimation.ROTATE:
return Transform.rotate(
angle: radians(animation.value * 360),
child: Opacity(
opacity: animation.value,
child: FadeTransition(opacity: animation, child: child),
),
);
// Animation for sliding the dialog from top to bottom.
case DialogAnimation.SLIDE_TOP_BOTTOM:
final curvedValue = curve.transform(animation.value) - 1.0;
return Transform(
transform: Matrix4.translationValues(0.0, curvedValue * 300, 0.0),
child: Opacity(
opacity: animation.value,
child: FadeTransition(opacity: animation, child: child),
),
);
// Animation for scaling the dialog.
case DialogAnimation.SCALE:
return Transform.scale(
scale: animation.value,
child: FadeTransition(opacity: animation, child: child),
);
// Animation for sliding the dialog from bottom to top.
case DialogAnimation.SLIDE_BOTTOM_TOP:
return SlideTransition(
position: Tween(begin: Offset(0, 1), end: Offset.zero)
.chain(CurveTween(curve: curve))
.animate(animation),
child: Opacity(
opacity: animation.value,
child: FadeTransition(opacity: animation, child: child),
),
);
// Animation for sliding the dialog from left to right.
case DialogAnimation.SLIDE_LEFT_RIGHT:
return SlideTransition(
position: Tween(begin: Offset(1.0, 0.0), end: Offset.zero)
.chain(CurveTween(curve: curve))
.animate(animation),
child: Opacity(
opacity: animation.value,
child: FadeTransition(opacity: animation, child: child),
),
);
// Animation for sliding the dialog from right to left.
case DialogAnimation.SLIDE_RIGHT_LEFT:
return SlideTransition(
position: Tween(begin: Offset(-1, 0), end: Offset.zero)
.chain(CurveTween(curve: curve))
.animate(animation),
child: Opacity(
opacity: animation.value,
child: FadeTransition(opacity: animation, child: child),
),
);
// Default fade animation.
case DialogAnimation.DEFAULT:
return FadeTransition(opacity: animation, child: child);
}
}