@@ -80,12 +80,14 @@ class SentryNavigatorObserver extends RouteObserver<PageRoute<dynamic>> {
80
80
RouteNameExtractor ? routeNameExtractor,
81
81
AdditionalInfoExtractor ? additionalInfoProvider,
82
82
@visibleForTesting TimeToDisplayTracker ? timeToDisplayTracker,
83
+ List <String >? ignoreRoutes,
83
84
}) : _hub = hub ?? HubAdapter (),
84
85
_enableAutoTransactions = enableAutoTransactions,
85
86
_autoFinishAfter = autoFinishAfter,
86
87
_setRouteNameAsTransaction = setRouteNameAsTransaction,
87
88
_routeNameExtractor = routeNameExtractor,
88
89
_additionalInfoProvider = additionalInfoProvider,
90
+ _ignoreRoutes = ignoreRoutes ?? [],
89
91
_native = SentryFlutter .native {
90
92
_isCreated = true ;
91
93
if (enableAutoTransactions) {
@@ -113,6 +115,7 @@ class SentryNavigatorObserver extends RouteObserver<PageRoute<dynamic>> {
113
115
final RouteNameExtractor ? _routeNameExtractor;
114
116
final AdditionalInfoExtractor ? _additionalInfoProvider;
115
117
final SentryNativeBinding ? _native;
118
+ final List <String > _ignoreRoutes;
116
119
static TimeToDisplayTracker ? _timeToDisplayTracker;
117
120
118
121
@internal
@@ -141,6 +144,11 @@ class SentryNavigatorObserver extends RouteObserver<PageRoute<dynamic>> {
141
144
void didPush (Route <dynamic > route, Route <dynamic >? previousRoute) {
142
145
super .didPush (route, previousRoute);
143
146
147
+ if (_isRouteIgnored (route) ||
148
+ previousRoute != null && _isRouteIgnored (previousRoute)) {
149
+ return ;
150
+ }
151
+
144
152
_setCurrentRouteName (route);
145
153
_setCurrentRouteNameAsTransaction (route);
146
154
@@ -160,6 +168,11 @@ class SentryNavigatorObserver extends RouteObserver<PageRoute<dynamic>> {
160
168
void didReplace ({Route <dynamic >? newRoute, Route <dynamic >? oldRoute}) {
161
169
super .didReplace (newRoute: newRoute, oldRoute: oldRoute);
162
170
171
+ if (newRoute != null && _isRouteIgnored (newRoute) ||
172
+ oldRoute != null && _isRouteIgnored (oldRoute)) {
173
+ return ;
174
+ }
175
+
163
176
_setCurrentRouteName (newRoute);
164
177
_setCurrentRouteNameAsTransaction (newRoute);
165
178
@@ -174,6 +187,11 @@ class SentryNavigatorObserver extends RouteObserver<PageRoute<dynamic>> {
174
187
void didPop (Route <dynamic > route, Route <dynamic >? previousRoute) {
175
188
super .didPop (route, previousRoute);
176
189
190
+ if (_isRouteIgnored (route) ||
191
+ previousRoute != null && _isRouteIgnored (previousRoute)) {
192
+ return ;
193
+ }
194
+
177
195
_setCurrentRouteName (previousRoute);
178
196
_setCurrentRouteNameAsTransaction (previousRoute);
179
197
@@ -376,6 +394,11 @@ class SentryNavigatorObserver extends RouteObserver<PageRoute<dynamic>> {
376
394
377
395
@internal
378
396
static const String rootScreenName = 'root /' ;
397
+
398
+ bool _isRouteIgnored (Route <dynamic > route) {
399
+ return _ignoreRoutes.isNotEmpty &&
400
+ _ignoreRoutes.contains (_getRouteName (route));
401
+ }
379
402
}
380
403
381
404
/// This class makes it easier to record breadcrumbs for events of Flutters
0 commit comments