因为我想多次重用动画控制器,所以我将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
以异步方式调用该方法时才会发生这种情况,否则闪烁效果就会消失。