RouteObserver< R extends Route> class
A Navigator observer that notifies RouteAwares of changes to the state of their Route.
RouteObserver informs subscribers whenever a route of type R
is pushed
on top of their own route of type R
or popped from it. This is for example
useful to keep track of page transitions, e.g. a RouteObserver<PageRoute>
will inform subscribed RouteAwares whenever the user navigates away from
the current page route to another page route.
To be informed about route changes of any type, consider instantiating a
RouteObserver<Route>
.
Type arguments
When using more aggressive
lints, in particular lints such
as always_specify_types
, the Dart analyzer will require that certain types
be given with their type arguments. Since the Route class and its
subclasses have a type argument, this includes the arguments passed to this
class. Consider using dynamic
to specify the entire class of routes rather
than only specific subtypes. For example, to watch for all PageRoute
variants, the RouteObserver<PageRoute<dynamic>>
type may be used.
// Register the RouteObserver as a navigation observer.
final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
void main() {
runApp(MaterialApp(
home: Container(),
navigatorObservers: [routeObserver],
));
}
class RouteAwareWidget extends StatefulWidget {
State<RouteAwareWidget> createState() => RouteAwareWidgetState();
}
// Implement RouteAware in a widget's state and subscribe it to the RouteObserver.
class RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {
@override
void didChangeDependencies() {
super.didChangeDependencies();
routeObserver.subscribe(this, ModalRoute.of(context));
}
@override
void dispose() {
routeObserver.unsubscribe(this);
super.dispose();
}
@override
void didPush() {
// Route was pushed onto navigator and is now topmost route.
}
@override
void didPopNext() {
// Covering route was popped off the navigator.
}
@override
Widget build(BuildContext context) => Container();
}
- Inheritance
- Object
- NavigatorObserver
- RouteObserver
Constructors
Properties
- hashCode → int
-
The hash code for this object. [...]
read-only, inherited
-
The navigator that the observer is observing, if any.
read-only, inherited
- runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
Methods
-
didPop(
Route route, Route previousRoute) → void -
The Navigator popped
route
. [...]override -
didPush(
Route route, Route previousRoute) → void -
The Navigator pushed
route
. [...]override -
subscribe(
RouteAware routeAware, R route) → void -
Subscribe
routeAware
to be informed about changes toroute
. [...] -
unsubscribe(
RouteAware routeAware) → void -
Unsubscribe
routeAware
. [...] -
didRemove(
Route route, Route previousRoute) → void -
The Navigator removed
route
. [...]inherited -
didReplace(
{Route newRoute, Route oldRoute }) → void -
The Navigator replaced
oldRoute
withnewRoute
.inherited -
didStartUserGesture(
Route route, Route previousRoute) → void -
The Navigator's route
route
is being moved by a user gesture. [...]inherited -
didStopUserGesture(
) → void -
User gesture is no longer controlling the Navigator. [...]
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a non-existent method or property is accessed. [...]
inherited
-
toString(
) → String -
Returns a string representation of this object.
inherited
Operators
-
operator ==(
dynamic other) → bool -
The equality operator. [...]
inherited