封装了一个无限旋转Widget,支持传入需要需要旋转的widget,可以实现对传入的widget 无限旋转的效果
import 'package:flutter/material.dart';
class InfiniteRotate extends StatefulWidget {
Widget rotateWidget;
InfiniteRotate({super.key, required this.rotateWidget});
@override
State<InfiniteRotate> createState() =>
_InfiniteRotateState(rotateWidget: rotateWidget);
}
class _InfiniteRotateState extends State<InfiniteRotate>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
Widget rotateWidget;
_InfiniteRotateState({required this.rotateWidget});
@override
void initState() {
_controller =
AnimationController(duration: const Duration(seconds: 2), vsync: this);
_controller.forward();
_controller.addStatusListener((status) {
if (status == AnimationStatus.completed) {
//动画从 controller.forward() 正向执行 结束时会回调此方法
//重置起点
_controller.reset();
//开启
_controller.forward();
} else if (status == AnimationStatus.dismissed) {
} else if (status == AnimationStatus.forward) {
} else if (status == AnimationStatus.reverse) {}
});
}
@override
Widget build(BuildContext context) {
return RotationTransition(
alignment: Alignment.center, turns: _controller, child: rotateWidget);
}
@override
void dispose() {
_controller.stop();
_controller.dispose();
super.dispose();
}
}