fix: on hover/enter issue for view items (#3528)

This commit is contained in:
Mathias Mogensen 2023-09-25 12:12:43 +02:00 committed by GitHub
parent 0996f5fd24
commit 949dab9afe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -44,10 +44,11 @@ class _FlowyHoverState extends State<FlowyHover> {
@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<FlowyHover> {
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) {