import 'package:flutter/material.dart'; import 'package:freezer/page_routes/basic_page_route.dart'; import 'package:freezer/ui/animated_blur.dart'; class FadePageRoute extends BasicPageRoute { @override final bool barrierDismissible; @override final Color barrierColor; @override final bool opaque; final WidgetBuilder builder; final bool blur; FadePageRoute({ required this.builder, this.blur = false, super.transitionDuration, super.maintainState, super.settings, this.barrierColor = Colors.black38, this.barrierDismissible = false, this.opaque = true, }); @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; } }