46

SliverListFlutter和Flutter有什么区别ListView

4

2 回答 2

74

几乎没有区别。

ListView 一个SliverList。与 相同GridView,这是一个SliverGrid

他们正在做同样的事情。它们之间的唯一区别是它SliverList是条子,而不是小部件。这意味着它ScrollView通常在 a 中使用CustomScrollView

ListView只不过是SliverList将其转换为 aWidget以使其可与其他小部件(例如Row/ )一起使用Container


大多数时候,使用ListView.

但是,如果您想要高级滚动行为,例如带有滚动的 appbar 动画;你需要使用一个CustomScrollView. 这将迫使您使用SliverList而不是ListView.

于 2018-05-16T10:06:41.423 回答
15

根据这篇文章

您使用的所有可滚动视图,例如ListViewGridView,都是actually implemented using Slivers. 您可以将 Slivers 视为较低级别的接口,为实现可滚动区域提供更细粒度的控制。因为 slivers 可以在滚动到视图中时懒惰地构建每个项目,所以 slivers 对于有效滚动大量子项特别有用。

于 2019-11-22T09:35:46.213 回答