首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查AnimatedContainer是否有动画

检查AnimatedContainer是否有动画
EN

Stack Overflow用户
提问于 2017-08-02 12:43:59
回答 1查看 1.3K关注 0票数 1

是否可以将某种StatusListener添加到AnimatedContainer中?我想知道动画什么时候完成,什么时候开始。用AnimatedBuilder编写的代码:

代码语言:javascript
复制
        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的代码

代码语言:javascript
复制
_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');
});
EN

回答 1

Stack Overflow用户

发布于 2017-08-02 13:35:09

AnimatedContainer只是一个方便,使动画更容易。如果您想拥有一个侦听器,您应该考虑实现您自己的AnimationController

看看我的答案here,有一个简单的例子。您基本上创建了一个AnimationController,而不是用作动画的父级(例如CurvedAnimation)。您可以将侦听器附加到动画。

##-编辑##

针对您的代码示例,尝试如下:

代码语言:javascript
复制
_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:

代码语言:javascript
复制
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)),
    );
  },
);

(这对我起作用;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45461242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档