26 lines
737 B
Dart
26 lines
737 B
Dart
|
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<HoverDetector> createState() => _HoverDetectorState();
|
||
|
}
|
||
|
|
||
|
class _HoverDetectorState extends State<HoverDetector> {
|
||
|
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),
|
||
|
);
|
||
|
}
|
||
|
}
|