PageTransition<T> constructor
PageTransition<T> ({
- Key? key,
- required Widget builder(
- BuildContext context
- required PageTransitionType type,
- Curve curve = Curves.easeInOut,
- Alignment alignment = Alignment.center,
- Duration duration = const Duration(milliseconds: 600),
- RouteSettings? settings,
- bool maintainState = true,
Implementation
PageTransition({
Key? key,
required this.builder,
required this.type,
this.curve = Curves.easeInOut,
this.alignment = Alignment.center,
this.duration = const Duration(milliseconds: 600),
RouteSettings? settings,
bool maintainState = true,
}) : super(
pageBuilder: (context, animation, secondaryAnimation) {
return builder(context);
},
transitionDuration: duration,
settings: settings,
maintainState: maintainState,
transitionsBuilder: (context, animation, secondaryAnimation, child) {
switch (type) {
case PageTransitionType.rightToLeft:
return SlideTransition(
transformHitTests: false,
position: Tween<Offset>(
begin: const Offset(1.0, 0.0),
end: Offset.zero,
).animate(CurvedAnimation(parent: animation, curve: curve)),
child: SlideTransition(
position: Tween<Offset>(
begin: Offset.zero,
end: const Offset(-1.0, 0.0),
).animate(CurvedAnimation(
parent: secondaryAnimation, curve: curve)),
child: child,
),
);
case PageTransitionType.leftToRight:
return SlideTransition(
transformHitTests: false,
position: Tween<Offset>(
begin: const Offset(-1.0, 0.0),
end: Offset.zero,
).animate(CurvedAnimation(parent: animation, curve: curve)),
child: SlideTransition(
position: Tween<Offset>(
begin: Offset.zero,
end: const Offset(1.0, 0.0),
).animate(CurvedAnimation(
parent: secondaryAnimation, curve: curve)),
child: child,
),
);
case PageTransitionType.upToDown:
return SlideTransition(
transformHitTests: false,
position: Tween<Offset>(
begin: const Offset(0.0, -1.0),
end: Offset.zero,
).animate(CurvedAnimation(parent: animation, curve: curve)),
child: SlideTransition(
position: Tween<Offset>(
begin: Offset.zero,
end: const Offset(0.0, 1.0),
).animate(CurvedAnimation(
parent: secondaryAnimation, curve: curve)),
child: child,
),
);
case PageTransitionType.downToUp:
return SlideTransition(
transformHitTests: false,
position: Tween<Offset>(
begin: const Offset(0.0, 1.0),
end: Offset.zero,
).animate(CurvedAnimation(parent: animation, curve: curve)),
child: SlideTransition(
position: Tween<Offset>(
begin: Offset.zero,
end: const Offset(0.0, -1.0),
).animate(CurvedAnimation(
parent: secondaryAnimation, curve: curve)),
child: child,
),
);
case PageTransitionType.scale:
return ScaleTransition(
alignment: alignment,
scale: CurvedAnimation(
parent: animation,
curve: Interval(
0.00,
0.50,
curve: curve,
),
),
child: child,
);
case PageTransitionType.rotate:
return RotationTransition(
alignment: alignment,
turns: CurvedAnimation(parent: animation, curve: curve),
child: ScaleTransition(
alignment: Alignment.center,
scale: CurvedAnimation(parent: animation, curve: curve),
child: FadeTransition(
opacity: animation,
child: child,
),
),
);
case PageTransitionType.size:
return Align(
alignment: Alignment.center,
child: SizeTransition(
sizeFactor: CurvedAnimation(
parent: animation,
curve: curve,
),
child: child,
),
);
case PageTransitionType.rightToLeftWithFade:
return SlideTransition(
position: Tween<Offset>(
begin: const Offset(1.0, 0.0),
end: Offset.zero,
).animate(CurvedAnimation(parent: animation, curve: curve)),
child: FadeTransition(
opacity: CurvedAnimation(parent: animation, curve: curve),
child: SlideTransition(
position: Tween<Offset>(
begin: Offset.zero,
end: const Offset(-1.0, 0.0),
).animate(CurvedAnimation(
parent: secondaryAnimation, curve: curve)),
child: child,
),
),
);
case PageTransitionType.leftToRightWithFade:
return SlideTransition(
position: Tween<Offset>(
begin: const Offset(-1.0, 0.0),
end: Offset.zero,
).animate(CurvedAnimation(parent: animation, curve: curve)),
child: FadeTransition(
opacity: CurvedAnimation(parent: animation, curve: curve),
child: SlideTransition(
position: Tween<Offset>(
begin: Offset.zero,
end: const Offset(1.0, 0.0),
).animate(CurvedAnimation(
parent: secondaryAnimation, curve: curve)),
child: child,
),
),
);
}
},
);