【问题标题】:Is it necessary to optimize pageview with large amount of pages in Flutter?Flutter中有大量页面,是否需要优化页面浏览量?
【发布时间】:2020-08-16 08:23:33
【问题描述】:

我的应用中有一个PageView,其中包含大量页面。每个页面都非常复杂,有一个 PageView 和它自己的页面。

我是 Flutter 的新手,我的第一个预感是它需要优化。因此,在最外面的PageViewbuild() 函数中,我检查了索引,只为当前、上一页和下一页制作整页(我猜滑动动画需要当前页面和它旁边的页面提前构建)。对于其他页面,我只给它一个空的Container()

这是必要且正确的做法吗?我觉得这是 Flutter 应该做的一个明显的优化,但是我在网上找不到任何相关的讨论。任何建议表示赞赏!

【问题讨论】:

  • PageView 的 itemBuilder 仅在真正需要时才调用索引,而您无需执行任何其他操作
  • @Amir_P 非常感谢!我只是尝试禁用自己的优化,即使每次调用最外面的PageViewbuild() 时我都会创建所有页面,但每个页面的build() 函数仅在需要时自动调用。您应该将您的回复作为答案,以便我可以将其作为该问题的正确答案。再次感谢!
  • 不客气。我已经发过了

标签: flutter dart optimization


【解决方案1】:

Flutter 的 PageView 正在懒洋洋地调用你提供的 itemBuilder。对于索引,只有在真正需要页面并且您不需要做任何其他事情时才会调用它。但是为了进一步改进,您可以使您的视图层次结构更简单,并防止不必要的构建方法调用。 Here 你可以阅读更多关于性能最佳实践的信息。

【讨论】:

    【解决方案2】:

    不,不是。 ListViewGridView 和类似的小部件已经经过优化,可以仅构建和渲染当前需要的内容。您会在 PageView.builder 描述中得到提示:

    使用小部件创建一个可滚动列表,逐页工作 按需创建

    我认为普通的PageViewPageView.builder 之间的区别在于PageView 在启动时初始化所有子节点,而PageView.builder 是延迟初始化的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多