infintte_rotate.dart 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_screenutil/flutter_screenutil.dart';
  3. import '../../config/theme/dark_theme_colors.dart';
  4. import '../constants/iconfont/iconfont.dart';
  5. class InfiniteRotateIcon extends StatefulWidget {
  6. const InfiniteRotateIcon({super.key});
  7. @override
  8. State<InfiniteRotateIcon> createState() => _InfiniteRotateIconState();
  9. }
  10. class _InfiniteRotateIconState extends State<InfiniteRotateIcon>
  11. with SingleTickerProviderStateMixin {
  12. late final AnimationController _controller;
  13. @override
  14. void initState() {
  15. super.initState();
  16. // 创建动画控制器
  17. _controller = AnimationController(
  18. vsync: this,
  19. duration: const Duration(seconds: 2), // 转一圈的时长
  20. )..repeat(); // 无限循环
  21. }
  22. @override
  23. void dispose() {
  24. _controller.dispose(); // 防止内存泄漏
  25. super.dispose();
  26. }
  27. @override
  28. Widget build(BuildContext context) {
  29. return Center(
  30. child: RotationTransition(
  31. turns: _controller, // 控制旋转角度(0~1)
  32. child: Icon(
  33. IconFont.icon20, // 可换成任意图标或图片
  34. size: 20.w,
  35. color: DarkThemeColors.subscriptionSelectColor,
  36. ),
  37. ),
  38. );
  39. }
  40. }