1

因为我想多次重用动画控制器,所以我将from:0.0参数传递给控制器​​的构造函数,就像你在代码中看到的那样,但是当我想重用同一个控制器时,在前一到两毫秒控制器的值将存入旧的,我看到动画的结束语句闪烁,然后它开始正常工作。我不知道为什么我会得到那种眨眼效果。

class AnimatedTile extends StatelessWidget {
  final int value;
  final AnimationController controller;
  final Animation<Alignment> alignAnimation;

  AnimatedTile(this.value, {this.controller, this.alignAnimation});

  @override
  Widget build(BuildContext context) {
    _playAnimation();
    return AnimatedBuilder(
      animation: controller.view,
      child: Tile(value),
      builder: (context, child) {
        return Align(
          child: FractionallySizedBox(
              widthFactor: 0.25, heightFactor: 0.25, child: child),
          alignment: alignAnimation.value,
        );
      },
    );
  }

  Future<Null> _playAnimation() async {
    try {
      await controller.forward(from: 0.0).orCancel;
    } on TickerCanceled {
    }
  }
}

编辑:

只有当我_playAnimation以异步方式调用该方法时才会发生这种情况,否则闪烁效果就会消失。

4

0 回答 0