builder method

Route builder()

Called to obtain the child widget.

Implementation

Route<dynamic> builder() {
  Route<dynamic> _route;
  transitionEffect == TransitionEffect.rightToLeft && Platform.isIOS
      ? _route = CupertinoPageRoute<dynamic>(builder: (context) {
          return child;
        })
      : _route = PageRouteBuilder<Route<dynamic>>(
          settings: settings,
          transitionDuration: duration ??
              const Duration(
                milliseconds: 400,
              ),
          reverseTransitionDuration: duration ??
              const Duration(
                milliseconds: 400,
              ),
          pageBuilder: (BuildContext context, animation, _) => child,
          transitionsBuilder: (
            BuildContext context,
            animation,
            secondaryAnimation,
            child,
          ) {
            final tween =
                Tween(begin: transitionEffect.value, end: Offset.zero)
                    .chain(CurveTween(curve: curve ?? Curves.easeOutQuint));
            switch (transitionEffect) {
              case TransitionEffect.fade:
                return FadeTransition(opacity: animation, child: child);
              case TransitionEffect.scale:
                return ScaleTransition(
                    alignment: Alignment.bottomRight,
                    scale: animation,
                    child: child);
              case TransitionEffect.rightToLeft:
                return SlideTransition(
                  transformHitTests: false,
                  position: animation.drive(tween),
                  child: child,
                );
              case TransitionEffect.leftToRight:
                return SlideTransition(
                  transformHitTests: false,
                  position: animation.drive(tween),
                  child: child,
                );
              case TransitionEffect.topToBottom:
                return SlideTransition(
                  transformHitTests: false,
                  position: animation.drive(tween),
                  child: child,
                );
              case TransitionEffect.bottomToTop:
                return SlideTransition(
                  transformHitTests: false,
                  position: animation.drive(tween),
                  child: child,
                );
            }
          },
        );
  return _route;
}