因为我想多次重用动画控制器,所以我将from:0.0
参数传递给控制器的构造函数,就像您在代码中看到的一样,但是当我想重用同一控制器时,在第一个或第二个两毫秒的控制器值将存储在旧的控制器上,我看到动画的end语句闪烁了一下,然后开始按应有的方式工作。
我不知道为什么我会得到眨眼效果。
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
方法时,这种情况才会发生,否则闪烁效果就消失了。