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 contexts.app.view_names 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';

MaterialApp(
  navigatorObservers: [
    SentryNavigatorObserver(),
  ],
  // 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:

Inheritance

Constructors

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

Properties

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

Methods

debugObservingRoute(PageRoute route) bool
Whether this observer is managing changes for the specified route.
inherited
didPop(Route route, Route? previousRoute) → void
The Navigator popped route.
override
didPush(Route route, Route? previousRoute) → void
The Navigator pushed route.
override
didRemove(Route route, Route? previousRoute) → void
The Navigator removed route.
inherited
didReplace({Route? newRoute, Route? oldRoute}) → void
The Navigator replaced oldRoute with newRoute.
override
didStartUserGesture(Route route, Route? previousRoute) → void
The Navigator's routes are 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 nonexistent method or property is accessed.
inherited
subscribe(RouteAware routeAware, PageRoute route) → void
Subscribe routeAware to be informed about changes to route.
inherited
toString() String
A string representation of this object.
inherited
unsubscribe(RouteAware routeAware) → void
Unsubscribe routeAware.
inherited

Operators

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

Static Properties

currentRouteName String?
no setter
timeToDisplayTracker → TimeToDisplayTracker?
no setter