diff --git a/lib/hover_detector.dart b/lib/hover_detector.dart new file mode 100644 index 0000000..ce961be --- /dev/null +++ b/lib/hover_detector.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; + +class HoverDetector extends StatefulWidget { + const HoverDetector( + {Key? key, required this.defaultChild, required this.hoverChild}) + : super(key: key); + final Widget defaultChild; + final Widget hoverChild; + + @override + State createState() => _HoverDetectorState(); +} + +class _HoverDetectorState extends State { + bool amIHovering = false; + + @override + Widget build(BuildContext context) { + return MouseRegion( + child: amIHovering ? widget.hoverChild : widget.defaultChild, + onEnter: (PointerEvent details) => setState(() => amIHovering = true), + onExit: (PointerEvent details) => setState(() => amIHovering = false), + ); + } +}