Animation Ripple

 import "package:flutter/material.dart";


void main() {
runApp(const RiDemo(),);
}
class RiDemo extends StatelessWidget {
const RiDemo({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Ripple Animation in Flutter",
theme: ThemeData(
primarySwatch: Colors.purple,
),
home: const RippleDemo(),
);
}
}
class RippleDemo extends StatefulWidget {
const RippleDemo({super.key});

@override
State<RippleDemo> createState() {
return RippleState();
}
}
class RippleState extends State<RippleDemo> with SingleTickerProviderStateMixin {
late Animation _animation;
late AnimationController _animationController;

var listRadius = [150.0, 200.0, 250.0, 300.0, 350.0, 400.0, 450.0];

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

_animationController = AnimationController(vsync: this, duration: Duration(seconds: 3,), lowerBound: 0.5,);
// _animation = Tween(begin: 0.0, end: 1.0).animate(_animationController);

_animationController.addListener(() {
setState(() {},);
},);

_animationController.forward();

}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Ripple Animation"),
),
body: Center(
child: Stack(
alignment: Alignment.center,
children: listRadius.map((radius) {
return Container(
width: radius * _animationController.value,
height: radius * _animationController.value,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.blue.withOpacity(1.0 - _animationController.value),
),
);
}).toList(),
),
),
);
}
}

Comments

Popular posts from this blog

Pagination with Bloc Pattern in Flutter

Pagination First Practical in Flutter

ExpansionPanel with ExpansionPanelList with Complete Collapse Operation in Flutter