import 'package:flutter/material.dart'; class DirectPageTransitionsTheme extends PageTransitionsTheme { const DirectPageTransitionsTheme(); @override Widget buildTransitions( PageRoute route, BuildContext context, Animation animation, Animation secondaryAnimation, Widget child, ) => child; } class DirectMaterialPageRoute extends PageRouteBuilder { DirectMaterialPageRoute({ RouteSettings? settings, required WidgetBuilder builder, }) : super( settings: settings, transitionDuration: Duration.zero, pageBuilder: (context, a, sa) => builder(context), ); @override Widget buildTransitions(BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) { return child; } } class TransparentMaterialPageRoute extends PageRouteBuilder { TransparentMaterialPageRoute({ RouteSettings? settings, required RoutePageBuilder pageBuilder, }) : super(settings: settings, pageBuilder: pageBuilder); @override bool get opaque => false; @override Widget buildTransitions(BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) { final theme = Theme.of(context).pageTransitionsTheme; return theme.buildTransitions(this, context, animation, secondaryAnimation, child); } }