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

Second GET API Calling with Bloc simple Example in Flutter

Stack Container Scrollable Card widget UI with Custom Widget

Pagination with Bloc Pattern in Flutter