SentryNavigatorObserver class

This is a navigation observer to record navigational breadcrumbs. For now it only records navigation events and no gestures.

It also records Time to Initial Display (TTID).

Routes can always be null and their Route.settings can also always be null. For example, if the application starts, there is no previous route. The RouteSettings is null if a developer has not specified any RouteSettings.

The current route name will also be set to SentryEvent by FlutterEnricherEventProcessor.

SentryNavigatorObserver must be added to the navigation observer of your used app. This is an example for MaterialApp, but the integration for CupertinoApp and WidgetsApp is the same.

import 'package:flutter/material.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

  navigatorObservers: [
  // other parameter ...

The option enableAutoTransactions is enabled by default. For every new route a transaction is started. It's automatically finished after autoFinishAfter duration or when all child spans are finished, if those happen to take longer. The transaction will be set to Scope.span if the latter is empty.

Enabling the setRouteNameAsTransaction option overrides the current Scope.transaction which will also override the name of the current Scope.span. So be careful when this is used together with performance monitoring.

See also:



SentryNavigatorObserver({Hub? hub, bool enableAutoTransactions = true, Duration autoFinishAfter = const Duration(seconds: 3), bool setRouteNameAsTransaction = false, RouteNameExtractor? routeNameExtractor, AdditionalInfoExtractor? additionalInfoProvider, @visibleForTesting TimeToDisplayTracker? timeToDisplayTracker})


completedDisplayTracking Completer<void>?
no setter
hashCode int
The hash code for this object.
no setterinherited
The navigator that the observer is observing, if any.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited


debugObservingRoute(PageRoute route) bool
Whether this observer is managing changes for the specified route.
didPop(Route route, Route? previousRoute) → void
The Navigator popped route.
didPush(Route route, Route? previousRoute) → void
The Navigator pushed route.
didRemove(Route route, Route? previousRoute) → void
The Navigator removed route.
didReplace({Route? newRoute, Route? oldRoute}) → void
The Navigator replaced oldRoute with newRoute.
didStartUserGesture(Route route, Route? previousRoute) → void
The Navigator's routes are being moved by a user gesture.
didStopUserGesture() → void
User gesture is no longer controlling the Navigator.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
subscribe(RouteAware routeAware, PageRoute route) → void
Subscribe routeAware to be informed about changes to route.
toString() String
A string representation of this object.
unsubscribe(RouteAware routeAware) → void
Unsubscribe routeAware.


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

Static Properties

currentRouteName String?
no setter
isCreated bool
no setter
timeToDisplayTracker → TimeToDisplayTracker?
no setter


rootScreenName → const String