import 'package:flutter/cupertino.dart'; import 'package:freezer/page_routes/basic_page_route.dart'; import 'package:freezer/ui/animated_blur.dart'; class FadePageRoute extends BasicPageRoute { final WidgetBuilder builder; final bool blur; FadePageRoute({ required this.builder, this.blur = false, transitionDuration = const Duration(milliseconds: 300), maintainState = true, RouteSettings? settings, }) : super( transitionDuration: transitionDuration, maintainState: maintainState, settings: settings, ); @override Widget buildPage(BuildContext context, Animation animation, Animation secondaryAnimation) => builder(context); @override Widget buildTransitions(BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) { final baseTransition = FadeTransition( opacity: animation, child: child, ); if (blur) { return Stack(children: [ Positioned.fill( child: AnimatedBlur( animation: animation, multiplier: 10.0, child: const SizedBox())), baseTransition, ]); } return baseTransition; } }