Files
iroute/lib/components/toly_ui/button/hover_icon_button.dart
toly e26099ac18 v4
2023-10-23 10:17:40 +08:00

45 lines
1.1 KiB
Dart

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<HoverIconButton> createState() => _HoverIconButtonState();
}
class _HoverIconButtonState extends State<HoverIconButton> {
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;
});
}
}