【发布时间】:2021-08-07 04:09:07
【问题描述】:
我正在使用带有以下 itemBuilder 的 ListView.separated:
itemBuilder: (context, index) {
return _buildRow(dataList[index]);
}
我注意到这个 _buildRow() 方法是在我滚动时触发的。它似乎只触发滚动时屏幕外的行。
我不使用 _buildRow() 中的 setState() 方法。 另外,我验证了超级方法 build(BuildContext context) 没有被触发。它实际上只是 itemBuilder 之一。
我不确定这是否是正常行为。有没有办法避免在滚动时重新触发 itemBuilder 方法?如果这不可能,有没有办法在 ListView 构建完成后触发方法?
【问题讨论】:
-
我相信这个答案应该澄清一切:stackoverflow.com/a/56272858/12964903
-
是的,这是完全正常的行为。 ListView 根据需要构建它的子视图。如果您的孩子在列表区域之外,则不会构建该孩子。此外,当一个孩子出现在屏幕上并离开列表区域时,它会非常有效地为下一个即将到来的孩子回收该视图。
标签: flutter dart widget flutter-layout