123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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<AnimationForRotation> createState() => _AnimationForRotation();
- }
- class _AnimationForRotation extends State<AnimationForRotation> 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,
- );
- }
- }
|