📅  最后修改于: 2023-12-03 15:28:56.149000             🧑  作者: Mango
LinearProgressIndicator是Flutter中常用的widget之一,可以用来显示线性进度条。而颤动效果则可以给进度条增添一份活力感。下面将介绍如何在Flutter中实现颤动 LinearProgressIndicator 曲线。
Flutter中可以使用Animation来实现动画效果。所以,我们可以通过Tween和Curve来控制动画,实现颤动效果。
class ShakyLinearProgressIndicator extends StatefulWidget {
@override
_ShakyLinearProgressIndicatorState createState() => _ShakyLinearProgressIndicatorState();
}
class _ShakyLinearProgressIndicatorState extends State<ShakyLinearProgressIndicator> with SingleTickerProviderStateMixin {
AnimationController _controller;
Animation<double> _animation;
@override
void initState() {
super.initState();
_controller = AnimationController(vsync: this, duration: Duration(milliseconds: 1000));
_animation = Tween<double>(begin: -0.05, end: 0.05).animate(CurvedAnimation(parent: _controller, curve: Curves.easeInOut));
_controller.repeat(reverse: true);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: _animation,
builder: (context, child) {
return LinearProgressIndicator(
value: null,
backgroundColor: Colors.grey[200],
valueColor: AlwaysStoppedAnimation<Color>(Colors.blue),
semanticsLabel: 'Linear progress indicator',
semanticsValue: 'Linear progress indicator',
minHeight: 10,
valueThickness: 5,
// 在这里使用Transform偏移
transform: Matrix4.translationValues(_animation.value * 10, 0, 0),
);
},
);
}
}
本文介绍了如何在Flutter中通过使用Animation和Curve来实现颤动 LinearProgressIndicator 曲线的效果,通过调节Curve和Animation的参数,可以实现更多样式的动画效果。