31 lines
		
	
	
		
			865 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
		
			865 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
|  | import 'package:flutter/material.dart'; | ||
|  | 
 | ||
|  | class AnimatedRotationWidget extends StatefulWidget { | ||
|  |   final VoidCallback onPressed; | ||
|  |   final ValueChanged<bool>? onHover; | ||
|  |   final Widget child; | ||
|  |   const AnimatedRotationWidget( | ||
|  |       {super.key, required this.onPressed, required this.child, this.onHover}); | ||
|  | 
 | ||
|  |   @override | ||
|  |   State<AnimatedRotationWidget> createState() => AnimatedRotationWidgetState(); | ||
|  | } | ||
|  | 
 | ||
|  | class AnimatedRotationWidgetState extends State<AnimatedRotationWidget> { | ||
|  |   double turns = 0.0; | ||
|  | 
 | ||
|  |   @override | ||
|  |   Widget build(BuildContext context) { | ||
|  |     return AnimatedRotation( | ||
|  |         turns: turns, | ||
|  |         duration: const Duration(milliseconds: 200), | ||
|  |         child: InkWell( | ||
|  |             onTap: () { | ||
|  |               setState(() => turns += 1.0); | ||
|  |               widget.onPressed(); | ||
|  |             }, | ||
|  |             onHover: widget.onHover, | ||
|  |             child: widget.child)); | ||
|  |   } | ||
|  | } |