2023-07-29 02:17:26 +00:00
|
|
|
import 'package:flutter/widgets.dart';
|
|
|
|
import 'package:freezer/page_routes/basic_page_route.dart';
|
|
|
|
|
|
|
|
class ScaleFadePageRoute<T> extends BasicPageRoute<T> {
|
|
|
|
final WidgetBuilder builder;
|
|
|
|
final Curve animationCurve;
|
|
|
|
final tween = Tween<double>(begin: 0.975, end: 1.0);
|
|
|
|
|
|
|
|
ScaleFadePageRoute({
|
|
|
|
required this.builder,
|
|
|
|
this.animationCurve = Curves.linearToEaseOut,
|
2023-10-12 22:09:37 +00:00
|
|
|
super.transitionDuration,
|
|
|
|
super.maintainState,
|
|
|
|
super.settings,
|
|
|
|
});
|
2023-07-29 02:17:26 +00:00
|
|
|
|
2023-10-12 22:09:37 +00:00
|
|
|
@override
|
2023-07-29 02:17:26 +00:00
|
|
|
Widget buildPage(BuildContext context, Animation<double> animation,
|
|
|
|
Animation<double> secondaryAnimation) =>
|
|
|
|
builder(context);
|
|
|
|
|
|
|
|
@override
|
2023-10-12 22:09:37 +00:00
|
|
|
Widget buildTransitions(BuildContext context, Animation<double> animation,
|
2023-07-29 02:17:26 +00:00
|
|
|
Animation<double> secondaryAnimation, Widget child) {
|
2023-10-12 22:09:37 +00:00
|
|
|
final a = tween
|
|
|
|
.animate(CurvedAnimation(parent: animation, curve: animationCurve));
|
|
|
|
return ScaleTransition(scale: a, child: child);
|
2023-07-29 02:17:26 +00:00
|
|
|
}
|
|
|
|
}
|