fix: RadialMenuOverlay gesture-eating bug IgnorePointer when not visible + status listener to trigger rebuild on dismiss

This commit is contained in:
Patrick Britton 2026-02-08 15:04:08 -06:00
parent d6204db5c4
commit ea692da571

View file

@ -37,6 +37,13 @@ class _RadialMenuOverlayState extends State<RadialMenuOverlay>
vsync: this, vsync: this,
); );
// Rebuild when animation dismisses so the SizedBox.shrink check fires
_controller.addStatusListener((status) {
if (status == AnimationStatus.dismissed && mounted) {
setState(() {});
}
});
_scaleAnimation = CurvedAnimation( _scaleAnimation = CurvedAnimation(
parent: _controller, parent: _controller,
curve: Curves.easeOutBack, curve: Curves.easeOutBack,
@ -72,7 +79,9 @@ class _RadialMenuOverlayState extends State<RadialMenuOverlay>
return const SizedBox.shrink(); return const SizedBox.shrink();
} }
return GestureDetector( return IgnorePointer(
ignoring: !widget.isVisible,
child: GestureDetector(
onTap: widget.onDismiss, onTap: widget.onDismiss,
child: AnimatedBuilder( child: AnimatedBuilder(
animation: _controller, animation: _controller,
@ -102,6 +111,7 @@ class _RadialMenuOverlayState extends State<RadialMenuOverlay>
); );
}, },
), ),
),
); );
} }