Flutter:SliverList 和 SliverFixedExtentList 的区别

Flutter: Differences between SliverList and SliverFixedExtentList

Flutter中的SliverListSliverFixedExtentList有什么区别?

根据每个小部件的文档:

如果所有 children 具有相同的主轴范围,我们似乎应该使用 SliverFixedExtentList 而不是 SliverList。然而,“相同的主轴范围”到底是什么意思?

表示所有children的身高都一样。如果您熟悉 ListView,它有 itemExtent 属性 做同样的事情。

本质上,如果您不能保证所有列表项都“在主轴上具有相同的大小”(例如,在垂直滚动列表上等高,或在水平滚动列表上等宽),那么我们无法知道“列表中每个项目的确切大小”,直到我们加载它。但是,如果你能保证它们都具有相同的尺寸,例如高度为 100 个单位,那么我们就不需要加载每个项目来测量其尺寸。

当您想跳远距离时,在加载之前了解项目大小非常有用。例如,如果你想向下滚动 10,000 px,如果我们知道每个项目固定在 200 px 高,那么我们可以轻松地跳转 50 个项目,只需加载第 51 个项目并显示它。如果我们不知道(如果您不能保证)那么我们将不得不逐字排列所有项目 in-between 以查看 10,000 像素将落在我们的位置。