是否可以在
StatusListener
中添加某种 AnimatedContainer
?我希望在动画完成和开始时收到通知。
使用 AnimatedBuilder 编写代码:
new AnimatedBuilder(
animation: _animation,
child: char,
builder: (BuildContext context, Widget child) {
return new Transform(
child: child,
transform: new Matrix4.translation(new vect.Vector3(-100.0, y, 0.0)),
);
},
)
_animation
和_controller
的代码:
_controller = new AnimationController(
duration: const Duration(seconds: 5),
vsync: this,
);
_animation = new CurvedAnimation(
parent: _controller,
curve: Curves.linear,
)..addStatusListener((AnimationStatus status) {
if (status == AnimationStatus.completed)
print('completed');
});
AnimatedContainer
只是为了让动画变得更容易。如果你想有一个监听器,你应该考虑实现你自己的 AnimationController
。AnimationController
,然后将其用作动画的父级(例如 CurvedAnimation
)。您可以将侦听器附加到动画。
##--编辑--##
响应您的代码示例,请尝试以下操作:
_controller = new AnimationController(
duration: const Duration(seconds: 5),
vsync: this,
)..forward();
_animation = new CurvedAnimation(
parent: _controller,
curve: Curves.linear,
)..addStatusListener((AnimationStatus status) {
if (status == AnimationStatus.completed)
print('completed');
});
使用这样的 AnimatedBuilder:
new AnimatedBuilder(
animation: _animation,
child: new Text('a'),
builder: (BuildContext context, Widget child) {
return new Transform(
child: child,
transform: new Matrix4.translation(new Vector3(0.0, _controller.value * 10, 0.0)),
);
},
);
这对我有用;)