Flutter ListView.builder() 与 List.map():性能差异?

问题描述 投票:0回答:1

我目前正在编写一个习惯跟踪应用程序。为了显示所有习惯,我曾经使用List.map()方法来做到这一点:

Column(
  children: [todayList.map((habit) => HabitCard(habit: habit))],
             ...,
            ])

我使用了这个,因为我可以完全构建多个列表,而不会出现任何 UI 异常。

但很快我就注意到一个大问题:构建方法每秒被调用大约 10 次,而只有 3 个习惯。从性能角度来看,这当然是不可接受的。

当我尝试使用 ListView.builder() 时,习惯只执行构建方法,而实际上发生了一些变化,例如更新、编辑等。

我的 2 个问题:

  1. 考虑到当今的设备更加先进,您认为这种性能差异很重要吗?
  2. 如何使用 ListView.builder 实现与 List.map() 相同的效果?

请参见下图,了解它的外观: enter image description here

flutter
1个回答
0
投票

考虑到当今的设备更加先进,您认为这种性能差异很重要吗?

取决于项目的复杂程度,假设有100个项目,每个项目都在播放视频,如果使用

Column
来显示那么内存使用量很大,因为每个项目都会同时渲染。

如何使用 ListView.builder 实现与 List.map() 相同的效果?

您可以延迟显示项目,

Column
始终显示三个项目,当滚动到结束时,添加新项目并删除最旧的项目,但请使用
ListView.builder()
,更容易。

© www.soinside.com 2019 - 2024. All rights reserved.