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;
}
}
0 Comments