show static method
OverlayShower
show({
- required Widget child,
- String? key,
- Curve? curve,
- Duration? appearDuration,
- Duration? dismissDuration,
- Duration? onScreenDuration,
- Offset? slideBegin,
- double? opacityBegin,
- Widget appearAnimatedBuilder(
- OverlayShower shower,
- AnimationController controller,
- Widget widget
- Widget dismissAnimatedBuilder(
- OverlayShower shower,
- AnimationController controller,
- Widget widget
Basic show with animation
Implementation
static OverlayShower show({
required Widget child,
String? key,
Curve? curve,
Duration? appearDuration,
Duration? dismissDuration,
Duration? onScreenDuration,
// animation settings: only support slide & opacity now // default is opacity animation
Offset? slideBegin,
double? opacityBegin,
Widget Function(OverlayShower shower, AnimationController controller, Widget widget)? appearAnimatedBuilder,
Widget Function(OverlayShower shower, AnimationController controller, Widget widget)? dismissAnimatedBuilder,
}) {
opacityBegin ??= (slideBegin == null ? 0.0 : opacityBegin);
appearAnimatedBuilder ??= (shower, controller, widget) {
Curve _curve = Interval(0.0, 1.0, curve: curve ?? Curves.linearToEaseOut);
Animation<double> animateCurve = CurvedAnimation(curve: _curve, parent: controller);
Animation<double>? opacity = opacityBegin == null ? null : Tween(begin: opacityBegin, end: 1.0).animate(animateCurve);
Animation<Offset>? slide = slideBegin == null ? null : Tween<Offset>(begin: slideBegin, end: Offset.zero).animate(animateCurve);
// Animation<Offset> slide = Tween<Offset>(begin: slideBegin, end: Offset.zero).animate(controller);
// 1. Using AnimatedWidget
Widget? widgetSlide;
if (slide != null) {
widgetSlide = AnimatedBuilder(
animation: slide,
builder: (context, child) => Transform.translate(offset: slide.value, child: widget),
child: widget,
);
}
// 2. Using [__property__]Transition
// Widget widgetSlide = SlideTransition(position: slide, child: widget);
Widget? widgetFade;
if (opacity != null) {
widgetFade = FadeTransition(opacity: opacity, child: widgetSlide ?? widget);
}
return widgetFade ?? widgetSlide ?? widget;
};
return showWithAnimation(
key: key,
child: child,
appearDuration: appearDuration,
dismissDuration: dismissDuration,
onScreenDuration: onScreenDuration,
appearAnimatedBuilder: appearAnimatedBuilder,
dismissAnimatedBuilder: dismissAnimatedBuilder,
);
}