@@ -4,6 +4,7 @@ import 'dart:ui';
44import 'package:flutter/foundation.dart' ;
55import 'package:flutter/material.dart' ;
66import '../sentry_flutter.dart' ;
7+ import 'utils/debouncer.dart' ;
78
89/// This is a `WidgetsBindingObserver` which can observe some events of a
910/// Flutter application.
@@ -50,6 +51,8 @@ class SentryWidgetsBindingObserver with WidgetsBindingObserver {
5051 // ignore: deprecated_member_use
5152 final StreamController <SingletonFlutterWindow ?> _screenSizeStreamController;
5253
54+ final _didChangeMetricsDebouncer = Debouncer (milliseconds: 100 );
55+
5356 /// This method records lifecycle events.
5457 /// It tries to mimic the behavior of ActivityBreadcrumbsIntegration of Sentry
5558 /// Android for lifecycle events.
@@ -88,9 +91,12 @@ class SentryWidgetsBindingObserver with WidgetsBindingObserver {
8891 if (! _options.enableWindowMetricBreadcrumbs) {
8992 return ;
9093 }
91- // ignore: deprecated_member_use
92- final window = _options.bindingUtils.instance? .window;
93- _screenSizeStreamController.add (window);
94+
95+ _didChangeMetricsDebouncer.run (() {
96+ // ignore: deprecated_member_use
97+ final window = _options.bindingUtils.instance? .window;
98+ _screenSizeStreamController.add (window);
99+ });
94100 }
95101
96102 void _onScreenSizeChanged (Map <String , dynamic > data) {
0 commit comments