【发布时间】:2021-07-16 17:54:53
【问题描述】:
我有一个动画,无法理解这段代码中的一件事
class _MyStatefulWidgetState extends State<MyStatefulWidget>
with TickerProviderStateMixin {
late final AnimationController _controller = AnimationController(
duration: const Duration(seconds: 3),
vsync: this,
)..forward();
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Material(
child: Stack(
children: [
AnimatedBuilder(
animation: _controller,
builder: (context, child) {
return AnimatedPositioned(
top: ((size.height) * _controller.value) + 100,
duration: Duration(milliseconds: 500),
curve: Curves.fastOutSlowIn,
left: 0,
child: Container(
height: 250,
width: size.width * 0.6,
color: Colors.red,
),
);
},
),
]
)
);
}
}
此代码创建一个容器并为其位置设置动画。
我无法理解的是我在AnimatedPositioned 中指定了一个持续时间(500 毫秒)并指定了 3 秒作为_controller 的持续时间
- 为什么盒子会在 3 秒内而不是 500 毫秒内完成动画
- 动画最初不跟随曲线(即它线性移动,然后在一段时间后决定跟随曲线)
我还在学习动画,所以这可能是一个愚蠢的疑问,但我真的无法理解。 如果有人可以解释相关代码示例的情况,将不胜感激
【问题讨论】:
标签: flutter animation flutter-animation