检查AnimatedContainer是否有动画

问题描述 投票:0回答:2

是否可以在

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');
});
dart flutter
2个回答
1
投票

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)),
    );
  },
);

这对我有用;)


0
投票

AnimatedContainer有一个属性

结束时:

可用于检查容器的动画何时完成。这需要一个 void 函数。
希望有帮助。!!

© www.soinside.com 2019 - 2024. All rights reserved.