如何防止在Flutter中基于自定义逻辑重新渲染小部件?

时间:2019-01-08 01:41:17

标签: dart flutter

从反应的背景来看,它有许多生命周期方法,我可以决定是否重新渲染组件。当我有很多组件时,最近我遇到了性能问题,因为必须重新渲染所有这些组件。

我有什么办法可以阻止这种重新渲染,或者可以对其进行更多控制以决定何时重新渲染而无需遍历小部件树?

1 个答案:

答案 0 :(得分: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:

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