loading.dart 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import 'package:flutter/material.dart';
  2. import '../../utils/size_fit.dart';
  3. class Loading extends StatefulWidget {
  4. const Loading({Key? key}) : super(key: key);
  5. @override
  6. State<Loading> createState() => _LoadingState();
  7. }
  8. class _LoadingState extends State<Loading> with SingleTickerProviderStateMixin {
  9. AnimationController? controller;
  10. @override
  11. void initState() {
  12. // TODO: implement initState
  13. super.initState();
  14. controller = AnimationController(
  15. vsync: this, duration: const Duration(milliseconds: 400));
  16. controller!.addStatusListener((status) {
  17. if (status == AnimationStatus.completed) {
  18. controller!.reset();
  19. controller!.forward();
  20. } else if (status == AnimationStatus.dismissed) {}
  21. });
  22. controller!.forward();
  23. }
  24. @override
  25. void dispose() {
  26. controller!.dispose();
  27. super.dispose();
  28. }
  29. @override
  30. Widget build(BuildContext context) {
  31. SizeFit.initialize(context);
  32. return RotationTransition(
  33. turns: controller!,
  34. alignment: Alignment.center,
  35. child: Image.asset(
  36. 'assets/images/toast_loading.png',
  37. width: 48.px,
  38. height: 48.px,
  39. ),
  40. );
  41. }
  42. }