在Flutter中,SliverList和ListView有什么区别?

63

SliverListListView 在 Flutter 中有何不同?


7
那个问题完全合理。 - Rémi Rousselet
是的,我已经阅读了文档。但是没有发现任何区别。这就是为什么我问这个问题的原因。 - Rafiqul Hasan
@RafiqulHasan 我非常确信 @Adriaan 会告诉你,你还没有仔细地看过... :P - Pascal
@Pascal 这个问题是在2018年5月16日提出的。当时Flutter还处于alpha阶段,没有太多的文档或文章可供查阅。 - Rafiqul Hasan
2个回答

94

两者几乎没有区别。

ListView 一个SliverList,同样的GridView也是一个SliverGrid

它们完全一样,唯一的区别是SliverList是一个sliver而不是widget。这意味着它通常在ScrollView中使用,通常是CustomScrollView

ListView不过是将SliverList绑定成一个Widget, 以使其可以与其他组件一起使用,例如Row/Container等。


大多数情况下,请使用ListView

但是如果您想要高级滚动行为,如带有滚动的应用栏动画; 您将需要使用CustomScrollView。这将强制您使用SliverList而不是ListView


1
使用SliverList可以使用SliverToBoxAdapter,那么在不在SliverList中的ListView是否有相应的等效方法呢? - Pars

32
根据这篇文章的说法,ListViewGridView 等所有可滚动视图实际上都是使用 Slivers 实现的。你可以将 Slivers 视为更低级别的接口,提供更细粒度的控制来实现可滚动区域。因为 slivers 可以在每个项滚动到视图中时才延迟构建,所以 slivers 特别适用于有效地浏览大量子元素的情况。请注意保留原文中的html标签。

5
这应该被接受为答案,因为它定义了性能点。 - Hardy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接