【问题标题】:How to Prevent rerender of a widget based on custom logic in flutter?如何防止基于flutter中的自定义逻辑重新渲染小部件?
【发布时间】:2019-01-08 01:41:17
【问题描述】:

来自 react 背景,它有许多生命周期方法,我可以在其中决定是否重新渲染组件。当我有很多组件时,我最近在颤振中遇到了性能问题,因为它必须重新渲染所有这些。

我可以做些什么来防止这种重新渲染或对其进行更多控制以决定何时重新渲染而无需遍历小部件树?

【问题讨论】:

  • 如果你使用 ListView,你可以使用 ListView.builder() 来防止渲染性能问题。
  • 不,我有一个 Grid.count 组件。

标签: dart flutter


【解决方案1】:

通常当您因为渲染太多小部件而遇到性能问题时,您使用的是 ListView 或 GridView。您可以使用 ListView.builder() 或 GridView.builder() 方法来防止此性能问题。 ListView.builder 和 GridView.builder 将仅呈现屏幕上的小部件,从而防止出现性能问题。

这里有一些例子:

使用 GridView:

GridView.builder(
  gridDelegate:
      SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
  itemBuilder: (BuildContext context, int index) => _grid(data[index]),
) 

使用列表视图:

ListView.builder(
  itemBuilder: (BuildContext context, int index) => _listItem(data[index]),
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-18
    • 2020-07-25
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2019-02-27
    • 1970-01-01
    相关资源
    最近更新 更多