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));
 | 
						|
  }
 | 
						|
}
 |