Files
flutter-todos/lib/widgets/scale_animation_widget.dart
oldchen 07cc44442c 🔨: Clean code
2019-09-09 12:45:06 +08:00

53 lines
1.2 KiB
Dart

import 'package:flutter/material.dart';
class ScaleWidget extends StatefulWidget {
final Widget child;
const ScaleWidget({Key key, @required this.child}) : super(key: key);
@override
_ScaleWidgetState createState() => _ScaleWidgetState();
}
class _ScaleWidgetState extends State<ScaleWidget>
with SingleTickerProviderStateMixin {
AnimationController _controller;
Animation animation;
@override
void initState() {
_controller =
AnimationController(vsync: this, duration: Duration(seconds: 10));
animation = Tween(begin: 0.0, end: 1.0).animate(
CurvedAnimation(parent: _controller, curve: Curves.ease));
_controller.addStatusListener((status) {
if (status == AnimationStatus.completed) {
_controller.reset();
_controller.forward();
}
});
_controller.forward();
super.initState();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: animation,
builder: (ctx, child) {
return Transform.scale(
scale: ((animation.value - 0.5) * 2).abs(),
child: child,
);
},
child: widget.child,
);
}
}