import 'package:flutter/material.dart'; class DirectMaterialPageRoute extends PageRouteBuilder { DirectMaterialPageRoute({ RouteSettings settings, @required WidgetBuilder builder, }) : super( settings: settings, transitionDuration: Duration.zero, pageBuilder: (c, a, sa) => builder(c), ); @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); } }