builder method
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;
}