关于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。
0
0

Flutter高级进阶实战-仿哔哩哔哩-掌握Flutter高阶技能

一次性掌握Flutter高阶技能+商业级复杂项目架构设计与开发方案

1723 学习 · 870 问题

查看课程