import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; class HoverIconButton extends StatefulWidget { final VoidCallback onPressed; final IconData icon; final double size; final Color? hoverColor; final Color? defaultColor; const HoverIconButton({super.key,required this.onPressed ,required this.icon,this.hoverColor,this.size=24,this.defaultColor}); @override State createState() => _HoverIconButtonState(); } class _HoverIconButtonState extends State { bool _hover = false; @override Widget build(BuildContext context) { Color? color = (_hover)?widget.hoverColor??Theme.of(context).primaryColor:(widget.defaultColor??null); return MouseRegion( cursor: SystemMouseCursors.click, onEnter: _onEnter, onExit: _onExit, child: GestureDetector( onTap: widget.onPressed, child: Icon(widget.icon,size: widget.size,color: color,)), ); } void _onEnter(PointerEnterEvent event) { setState(() { _hover = true; }); } void _onExit(PointerExitEvent event) { setState(() { _hover = false; }); } }