diff --git a/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/hover.dart b/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/hover.dart index 6180b40c7b..70b64f3230 100644 --- a/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/hover.dart +++ b/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/hover.dart @@ -44,10 +44,11 @@ class _FlowyHoverState extends State { @override void didUpdateWidget(covariant FlowyHover oldWidget) { - if (widget.resetHoverOnRebuild == true) { + if (widget.resetHoverOnRebuild) { // Reset the _onHover to false when the parent widget get rebuild. _onHover = false; } + super.didUpdateWidget(oldWidget); } @@ -58,28 +59,29 @@ class _FlowyHoverState extends State { opaque: false, onHover: (p) { if (_onHover) return; - - if (widget.buildWhenOnHover?.call() ?? true) { - setState(() => _onHover = true); - if (widget.onHover != null) { - widget.onHover!(true); - } - } + _setOnHover(true); + }, + onEnter: (p) { + if (_onHover) return; + _setOnHover(true); }, onExit: (p) { - if (_onHover == false) return; - - if (widget.buildWhenOnHover?.call() ?? true) { - setState(() => _onHover = false); - if (widget.onHover != null) { - widget.onHover!(false); - } - } + if (!_onHover) return; + _setOnHover(false); }, child: renderWidget(), ); } + void _setOnHover(bool isHovering) { + if (widget.buildWhenOnHover?.call() ?? true) { + setState(() => _onHover = isHovering); + if (widget.onHover != null) { + widget.onHover!(isHovering); + } + } + } + Widget renderWidget() { var showHover = _onHover; if (!showHover && widget.isSelected != null) {