繁体   English   中英

如何不为 Flutter Flame 重建一个 Overlay Widget?

[英]How not to rebuild an Overlay Widget for Flutter Flame?

我有一个 FlameGame 小部件和 2 个叠加层。

  • 叠加层 A(带动画)
  • 叠加层 B(带按钮)

在代码中的某个时刻,我需要显示展台覆盖图。

  • Overlay A 会在 animation 结束后消失。
  • 按下按钮后,覆盖 B 将消失。

我的问题是,如果我在覆盖 A 上的 animation 结束之前按下覆盖 B 上的按钮,它会导致覆盖 A 上的重建和 animation 重新启动。 (看起来不好看。。。)

  • 添加了尝试切换女巫叠加层的顺序。 只会让A出现在B的后面。
  • 尝试使 A 有状态。 不过,删除 B 会导致 A 再次调用 initState()。

直到有人提出非 hacky 方式,我通过以下方式解决了它:

  • 加个双? 变量添加到我添加了叠加层的 FlameGame 组件,并在 A 叠加层的 initState() 中检查该值是否为非 null。

  • 如果是,我设置它并在 animation 的 addListener() 中每次都设置它。

  • 如果它不是 null,我将我的 animation 值设置为该值。

  • 在 dispose() 中我设置了 double? 至 null。

它很乱,但如果有人需要解决这个确切问题,我会尝试提供代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM