【问题标题】:Do adding, removing a child to stack cause all stack children to rebuild?添加,删除一个孩子到堆栈会导致所有堆栈孩子重建吗?
【发布时间】:2021-05-08 01:33:54
【问题描述】:

假设我有一个包含 100 个定位小部件子级的堆栈,我将一个新的已定位小部件添加到该堆栈中,但其余的保持不变,然后我 setState 重建该堆栈,是否应该所有 100 个子级都运行它们的重建功能?我问是因为这发生在我的应用程序中,但希望我可以阻止整个堆栈的重建,因为颤动应该看到大部分堆栈没有变化。

编辑:[更准确地说,当我添加一个孩子或删除一个孩子时,如何确保我不会重新渲染堆栈中的所有 100 个小部件,有没有办法验证、检查渲染树]

【问题讨论】:

  • 是的,他们都应该重建
  • 有没有办法通过以某种方式包装它们来隔离 100 或其他解决方案
  • 顺便说一句,那 100 个小部件是什么?它们是典型的小部件,如按钮、文本字段、滑块等,还是您正试图以一种 hacky 的方式使用一些小部件?
  • 它们是可拖动的小部件,可以在屏幕上移动,具有各种带有文本、图像、CustomPainter 路径的小部件树。
  • 它们有位置,因此它们可以在拖动后保持在该位置。正如你可以想象的那样,如果我只是添加或删除一个,我不希望所有这些都刷新。

标签: flutter flutter-layout


【解决方案1】:

有状态小部件内的所有小部件都应在每个 setState 中重建, 为了防止 setState 某些小部件,您应该为堆栈设置一个单独的有状态小部件。 this may useful

【讨论】:

    猜你喜欢
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    相关资源
    最近更新 更多