Qries

Subscribe Us

Advertisement

Loading Animation

 

Code:

import 'package:flutter/animation.dart';
import 'package:flutter/material.dart';

class Loading5 extends StatefulWidget {
  @override
  _Loading5State createState() => _Loading5State();
}

class _Loading5State extends State<Loading5> with TickerProviderStateMixin {
  AnimationController controller1;
  Animation<double> animation1;

  AnimationController controller2;
  Animation<double> animation2;

  @override
  void initState() {
    super.initState();

    controller1 =
        AnimationController(vsync: this, duration: Duration(seconds: 1));
    animation1 = Tween<double>(begin: .0, end: .5)
        .animate(CurvedAnimation(parent: controller1, curve: Curves.easeInOut))
          ..addListener(() {
            setState(() {});
          })
          ..addStatusListener((status) {
            if (status == AnimationStatus.completed) {
              controller1.reverse();
              controller2.forward();
            } else if (status == AnimationStatus.dismissed) {
              controller1.forward();
            }
          });

    controller2 =
        AnimationController(vsync: this, duration: Duration(seconds: 1));
    animation2 = Tween<double>(begin: .0, end: .5)
        .animate(CurvedAnimation(parent: controller2, curve: Curves.easeInOut))
          ..addListener(() {
            setState(() {});
          })
          ..addStatusListener((status) {
            if (status == AnimationStatus.completed) {
              controller2.reverse();
            } else if (status == AnimationStatus.dismissed) {
              controller2.forward();
            }
          });

    controller1.forward();
  }

  @override
  void dispose() {
    controller1.dispose();
    controller2.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Container(
          height: 100,
          width: 100,
          child: CustomPaint(
            painter: MyPainter(animation1.value, animation2.value),
          ),
        ),
      ),
    );
  }
}

class MyPainter extends CustomPainter {
  // ignore: non_constant_identifier_names
  final double Radius_1;
  // ignore: non_constant_identifier_names
  final double Radius_2;

  MyPainter(this.Radius_1, this.Radius_2);

  @override
  void paint(Canvas canvas, Size size) {
    // ignore: non_constant_identifier_names
    Paint Circle1 = Paint()..color = Colors.indigo;

    // ignore: non_constant_identifier_names
    Paint Circle_2 = Paint()..color = Color(0xfffbbc07);

    canvas.drawCircle(Offset(size.width * .40, size.height * .40),
        size.width * Radius_1, Circle1);

    canvas.drawCircle(Offset(size.width * .40, size.height * .40),
        size.width * Radius_2, Circle_2);
  }

  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) {
    return true;
  }
}

Post a Comment

0 Comments