From b2d19f7e70702a335e7ff05bcef536c613223d0c Mon Sep 17 00:00:00 2001 From: Jonas Bark Date: Tue, 30 Dec 2025 09:44:27 +0100 Subject: [PATCH] ignore messages when in background --- lib/widgets/testbed.dart | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/widgets/testbed.dart b/lib/widgets/testbed.dart index 4dc4bc5..1d9a265 100644 --- a/lib/widgets/testbed.dart +++ b/lib/widgets/testbed.dart @@ -49,7 +49,7 @@ class Testbed extends StatefulWidget { State createState() => _TestbedState(); } -class _TestbedState extends State with SingleTickerProviderStateMixin { +class _TestbedState extends State with SingleTickerProviderStateMixin, WidgetsBindingObserver { late final Ticker _ticker; late StreamSubscription _actionSubscription; @@ -67,6 +67,8 @@ class _TestbedState extends State with SingleTickerProviderStateMixin { Offset? _lastMove; + bool _isInBackground = false; + @override void didChangeDependencies() { super.didChangeDependencies(); @@ -74,13 +76,19 @@ class _TestbedState extends State with SingleTickerProviderStateMixin { _isMobile = MediaQuery.sizeOf(context).width < 600; } + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + _isInBackground = state == AppLifecycleState.paused || state == AppLifecycleState.hidden; + } + @override void initState() { super.initState(); + WidgetsBinding.instance.addObserver(this); _focusNode = FocusNode(debugLabel: 'TestbedFocus', canRequestFocus: true, skipTraversal: true); _actionSubscription = core.connection.actionStream.listen((data) async { - if (!mounted) { + if (!mounted || (_isInBackground && data is! AlertNotification)) { return; } if (data is ButtonNotification && data.buttonsClicked.isNotEmpty) { @@ -162,6 +170,7 @@ class _TestbedState extends State with SingleTickerProviderStateMixin { void dispose() { _ticker.dispose(); _focusNode.dispose(); + WidgetsBinding.instance.removeObserver(this); super.dispose(); }