关于GlobalKey<BarrageTransitionState>()
来源:11-8 基于Animation实现视频弹幕动效

demonCry
2022-09-18
// todo fix 动画状态错乱
final _key = GlobalKey<BarrageTransitionState>();
Widget build(BuildContext context) {
return Positioned.fill(
top: top,
child: BarrageTransition(
key: _key,
onComplete: (v) {
onComplete(id);
},
duration: duration,
child: child
)
);
}
这里能详细解释下吗? 怎么添加个key就能解决动画错乱了?
而且去掉这个key, 也没错乱啊?
另外为什么这个key的泛型传的是BarrageTransitionState?
写回答
1回答
-
CrazyCodeBoy
2022-09-19
1、在Flutter的底层渲染中,是根据key来决定是否要重新绘制这个widget,默认情况下是不需要传递这个key,也就是交给系统托管,但如果想控制某个widget不跟随系统的行为来刷新,那么可以借助GlobalKey,GlobalKey是个全局的key不依赖当前widget的状态。
2、因为这里的GlobalKey是给BarrageTransition用的,所以这个泛型要设置成BarrageTransition的State也就是BarrageTransitionState。00
相似问题