图标大小动画onPressed

时间:2019-10-25 15:21:15

标签: flutter flutter-layout flutter-animation

我有带有行图标的BottomAppBar。

BottomAppBar(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: <Widget>[
              IconButton(),
              IconButton(),
              IconButton(),
            ],
          ))

我想制作一个平滑的动画,以便在单击图标时,它会缩小,然后返回其原始大小。我会称其为拍打效果。我知道一种通过一堆animationcontroller来做到这一点的方法,但是有什么方法可以使其变得更容易,例如AnimatedSize还是其他?
是这样的:
0:IconSize = 20.0
1:onPressed:IconSize = 15.0
2:IconSize = 20.0

2 个答案:

答案 0 :(得分:1)

尝试使用AnimatedContainer小部件来完成此操作,然后将其包装到GestureDetector中,并像这样更改容器的宽度和高度:

SELECT t0.*
FROM graph_job t0
WHERE (t0.id IN (SELECT t2.graph_job_id
FROM graph_job_role t2  INNER JOIN clover_role t1  ON (t2.clover_role_id = t1.role_id)
WHERE (t1.role_name IN ?1 )) )

答案 1 :(得分:0)

您可以使用 AnimatedBuilderTweenSequenceAnimationController 来实现这一点。 AnimatedBuilder 的官方文档很好地解释了设置(即使有视频)。

您的 TweenSequence 可能如下所示:

final Animation<double> animation = TweenSequence(
  <TweenSequenceItem<double>>[
    TweenSequenceItem<double>(
      tween: Tween<double>(begin: 20.0, end: 15.0)
        .chain(CurveTween(curve: Curves.ease)),
      weight: 50.0,
    ),
    TweenSequenceItem<double>(
      tween: Tween<double>(begin: 15.0, end: 20.0)
        .chain(CurveTween(curve: Curves.ease)),
      weight: 50.0,
    ),
  ],
).animate(myAnimationController);