import 'package:flutter/widgets.dart'; import 'package:freezer/page_routes/basic_page_route.dart'; class ScaleFadePageRoute extends BasicPageRoute { final WidgetBuilder builder; final Curve animationCurve; final tween = Tween(begin: 0.975, end: 1.0); ScaleFadePageRoute({ required this.builder, this.animationCurve = Curves.linearToEaseOut, Duration transitionDuration = const Duration(milliseconds: 300), bool maintainState = true, RouteSettings? settings, }) : super( transitionDuration: transitionDuration, maintainState: maintainState, settings: settings); Widget buildPage(BuildContext context, Animation animation, Animation secondaryAnimation) => builder(context); @override Widget buildTransitions(BuildContext context, Animation _, Animation secondaryAnimation, Widget child) { final animation = tween.animate(CurvedAnimation(parent: _, curve: animationCurve)); return ScaleTransition(scale: animation, child: child); } }