import 'package:flutter/material.dart'; // 旋转动画 class AnimationForRotation extends StatefulWidget { final Duration duration; final bool play; final Widget child; const AnimationForRotation({ Key? key, required this.duration, required this.child, this.play = true, }) : super(key: key); @override State createState() => _AnimationForRotation(); } class _AnimationForRotation extends State with SingleTickerProviderStateMixin { late AnimationController _controller; late bool isStop = false; @override void dispose() { // Widget销毁时,必须销毁动画 _controller.dispose(); super.dispose(); } @override void initState() { super.initState(); _controller = AnimationController(duration: const Duration(milliseconds: 600), vsync: this); _controller.repeat(); } @override Widget build(BuildContext context) { if(widget.play == false){ // 动画暂停 setState(()=>isStop = true); _controller.stop(); }else if(isStop == true){ // 继续动画 setState(()=>isStop = false); _controller.repeat(); } return RotationTransition( alignment: Alignment.center, turns: _controller, child: widget.child, ); } }