import 'package:flutter/material.dart'; class ScaleUpRouter extends PageRoute { final WidgetBuilder builder; final Widget current; ScaleUpRouter({ required this.builder, required this.current, }); @override Color? get barrierColor => Colors.transparent; @override String? get barrierLabel => null; @override bool get maintainState => true; @override Duration get transitionDuration => const Duration(milliseconds: 400); @override Widget buildPage(BuildContext context, Animation animation, Animation secondaryAnimation) { return builder(context); } @override Widget buildTransitions(BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) { return Stack( children: [ ScaleTransition( scale: Tween( begin: 1, end: 5, ).animate( CurvedAnimation( parent: animation, curve: Curves.linear, ), ), child: current, ), ScaleTransition( scale: Tween( begin: 0, end: 1, ).animate( CurvedAnimation( parent: animation, curve: Curves.linear, ), ), child: child, ) ], ); } }