MaterialRouteTransitionMixin<T> mixin

A mixin that provides platform-adaptive transitions for a PageRoute.

For Android, the entrance transition for the page slides the route upwards and fades it in. The exit transition is the same, but in reverse.

The transition is adaptive to the platform and on iOS, the route slides in from the right and exits in reverse. The route also shifts to the left in parallax when another page enters to cover it. (These directions are flipped in environments with a right-to-left reading direction.) See also:

Superclass Constraints
Implemented by




builder WidgetBuilder
Builds the primary contents of the route.
transitionDuration Duration
The duration the transition going forwards. [...]
read-only, override
barrierColor Color
The color to use for the modal barrier. If this is null, the barrier will be transparent. [...]
read-only, override
barrierLabel String
The semantic label used for a dismissible barrier. [...]
read-only, override
fullscreenDialog bool
Whether this page route is a full-screen dialog. [...]
final, inherited
opaque bool
Whether the route obscures previous routes when the transition is complete. [...]
read-only, inherited
barrierDismissible bool
Whether you can dismiss this route by tapping the modal barrier. [...]
read-only, inherited
semanticsDismissible bool
Whether the semantics of the modal barrier are included in the semantics tree. [...]
read-only, inherited
barrierCurve Curve
The curve that is used for animating the modal barrier in and out. [...]
read-only, inherited
maintainState bool
Whether the route should remain in memory when it is inactive. [...]
read-only, inherited
offstage bool
Whether this route is currently offstage. [...]
read / write, inherited
subtreeContext BuildContext
The build context for the subtree containing the primary content of this route.
read-only, inherited
animation Animation<double>
The animation that drives the route's transition and the previous route's forward transition.
read-only, inherited
secondaryAnimation Animation<double>
The animation for the route being pushed on top of this route. This animation lets this route coordinate with the entrance and exit transition of route pushed on top of this route.
read-only, inherited
hasScopedWillPopCallback bool
True if one or more WillPopCallback callbacks exist. [...]
@protected, read-only, inherited
canPop bool
Whether this route can be popped. [...]
read-only, inherited
completed Future<T>
This future completes only once the transition itself has finished, after the overlay entries have been removed from the navigator's overlay. [...]
read-only, inherited
reverseTransitionDuration Duration
The duration the transition going in reverse. [...]
read-only, inherited
finishedWhenPopped bool
Controls whether didPop calls NavigatorState.finalizeRoute. [...]
read-only, inherited
controller AnimationController
The animation controller that the route uses to drive the transitions. [...]
@protected, read-only, inherited
debugLabel String
A short description of this route useful for debugging.
read-only, inherited
overlayEntries List<OverlayEntry>
The overlay entries of this route. [...]
read-only, inherited
The navigator that the route is in, if any.
read-only, inherited
settings RouteSettings
The settings for this route. [...]
read-only, inherited
willHandlePopInternally bool
Whether calling didPop would return false.
read-only, inherited
currentResult → T
When this route is popped (see Navigator.pop) if the result isn't specified or if it's null, this value will be used instead. [...]
read-only, inherited
popped Future<T>
A future that completes when this route is popped off the navigator. [...]
read-only, inherited
isCurrent bool
Whether this route is the top-most route on the navigator. [...]
read-only, inherited
isFirst bool
Whether this route is the bottom-most route on the navigator. [...]
read-only, inherited
isActive bool
Whether this route is on the navigator. [...]
read-only, inherited
hashCode int
The hash code for this object. [...]
read-only, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited


canTransitionTo(TransitionRoute nextRoute) bool
Returns true if this route supports a transition animation that runs when nextRoute is pushed on top of it or when nextRoute is popped off of it. [...]
buildPage(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) Widget
Override this method to build the primary content of this route. [...]
buildTransitions(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) Widget
Override this method to wrap the child with one or more transition widgets that define how the route arrives on and leaves the screen. [...]
canTransitionFrom(TransitionRoute previousRoute) bool
Returns true if previousRoute should animate when this route is pushed on top of it or when then this route is popped off of it. [...]
setState(VoidCallback fn) → void
Schedule a call to buildTransitions. [...]
@protected, inherited
install() → void
Called when the route is inserted into the navigator. [...]
didPush() TickerFuture
Called after install when the route is pushed onto the navigator. [...]
didAdd() → void
Called after install when the route is added to the navigator. [...]
willPop() Future<RoutePopDisposition>
Returns RoutePopDisposition.doNotPop if any of callbacks added with addScopedWillPopCallback returns either false or null. If they all return true, the base Route.willPop's result will be returned. The callbacks will be called in the order they were added, and will only be called if all previous callbacks returned true. [...]
addScopedWillPopCallback(WillPopCallback callback) → void
Enables this route to veto attempts by the user to dismiss it. [...]
removeScopedWillPopCallback(WillPopCallback callback) → void
Remove one of the callbacks run by willPop. [...]
didChangePrevious(Route previousRoute) → void
This route's previous route has changed to the given new route. [...]
changedInternalState() → void
Called whenever the internal state of the route has changed. [...]
changedExternalState() → void
Called whenever the Navigator has its widget rebuilt, to indicate that the route may wish to rebuild as well. [...]
createOverlayEntries() Iterable<OverlayEntry>
Subclasses should override this getter to return the builders for the overlay.
toString() String
Returns a string representation of this object.
createAnimationController() AnimationController
Called to create the animation controller that will drive the transitions to this route from the previous one, and back to the previous route from this one.
createAnimation() Animation<double>
Called to create the animation that exposes the current progress of the transition controlled by the animation controller created by createAnimationController().
didReplace(Route oldRoute) → void
Called after install when the route replaced another in the navigator. [...]
didPop(T result) bool
A request was made to pop this route. If the route can handle it internally (e.g. because it has its own stack of internal state) then return false, otherwise return true (by returning the value of calling super.didPop). Returning false will prevent the default behavior of NavigatorState.pop. [...]
didPopNext(Route nextRoute) → void
The given route, which was above this one, has been popped off the navigator. [...]
didChangeNext(Route nextRoute) → void
This route's next route has changed to the given new route. [...]
dispose() → void
Discards any resources used by the object. [...]
didComplete(T result) → void
The route was popped or is otherwise being removed somewhat gracefully. [...]
@mustCallSuper, @protected, inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
addLocalHistoryEntry(LocalHistoryEntry entry) → void
Adds a local history entry to this route. [...]
removeLocalHistoryEntry(LocalHistoryEntry entry) → void
Remove a local history entry from this route. [...]


operator ==(Object other) bool
The equality operator. [...]