如何在颤动中制作滚动计数器
How to make scrolling counter in flutter
我想创建一个滚动计数器,我想知道如何在 flutter 中实现它。
我将补间动画与动画生成器一起使用
IntTween(begin: 0, end: starredCount).animate(
CurvedAnimation(parent: animationController, curve: Curves.easeOut)
您应该通过以下方式实施
class ValueChangeAnimationWidget extends StatefulWidget {
@override
ValueChangeAnimationWidgetState createState() =>
ValueChangeAnimationWidgetState();
}
class ValueChangeAnimationWidgetState
extends State<ValueChangeAnimationWidget> with TickerProviderStateMixin {
AnimationController controller;
Animation animation;
@override
void initState() {
super.initState();
controller = AnimationController(
duration: const Duration(milliseconds: 1000), vsync: this);
final Animation curve =
CurvedAnimation(parent: controller, curve: Curves.easeOut);
animation = IntTween(begin: 0, end: 10).animate(curve)
..addStatusListener((status) {
if (status == AnimationStatus.completed) {
controller.reverse();
}
if (status == AnimationStatus.dismissed) {
Navigator.pop(context);
}
});
}
@override
Widget build(BuildContext context) {
controller.forward();
return AnimatedBuilder(
animation: controller,
builder: (BuildContext context, Widget child) {
return Scaffold(
body: new Center(
child: Text(animation.value.toString(), style: TextStyle(fontSize: 48.0)),
));
});
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
}
我想在一个项目中这样做,所以我创建了一个名为 AnimatedFlipCounter
的隐式动画小部件,它实现了类似的效果。
我已经打包发布了:https://pub.dev/packages/animated_flip_counter
用法:
AnimatedFlipCounter(
duration: Duration(milliseconds: 500),
value: _value, /* pass in a number like 2014 */
)
小数:
AnimatedFlipCounter(
value: _value,
fractionDigits: 2, // decimal precision
suffix: "%",
textStyle: TextStyle(
fontSize: 40,
color: _value >= 0 ? Colors.green : Colors.red,
),
)
我想创建一个滚动计数器,我想知道如何在 flutter 中实现它。
我将补间动画与动画生成器一起使用
IntTween(begin: 0, end: starredCount).animate(
CurvedAnimation(parent: animationController, curve: Curves.easeOut)
您应该通过以下方式实施
class ValueChangeAnimationWidget extends StatefulWidget {
@override
ValueChangeAnimationWidgetState createState() =>
ValueChangeAnimationWidgetState();
}
class ValueChangeAnimationWidgetState
extends State<ValueChangeAnimationWidget> with TickerProviderStateMixin {
AnimationController controller;
Animation animation;
@override
void initState() {
super.initState();
controller = AnimationController(
duration: const Duration(milliseconds: 1000), vsync: this);
final Animation curve =
CurvedAnimation(parent: controller, curve: Curves.easeOut);
animation = IntTween(begin: 0, end: 10).animate(curve)
..addStatusListener((status) {
if (status == AnimationStatus.completed) {
controller.reverse();
}
if (status == AnimationStatus.dismissed) {
Navigator.pop(context);
}
});
}
@override
Widget build(BuildContext context) {
controller.forward();
return AnimatedBuilder(
animation: controller,
builder: (BuildContext context, Widget child) {
return Scaffold(
body: new Center(
child: Text(animation.value.toString(), style: TextStyle(fontSize: 48.0)),
));
});
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
}
我想在一个项目中这样做,所以我创建了一个名为 AnimatedFlipCounter
的隐式动画小部件,它实现了类似的效果。
我已经打包发布了:https://pub.dev/packages/animated_flip_counter
用法:
AnimatedFlipCounter(
duration: Duration(milliseconds: 500),
value: _value, /* pass in a number like 2014 */
)
小数:
AnimatedFlipCounter(
value: _value,
fractionDigits: 2, // decimal precision
suffix: "%",
textStyle: TextStyle(
fontSize: 40,
color: _value >= 0 ? Colors.green : Colors.red,
),
)