ListView——线性排列的可滚动列表小部件。
如果为非null,则itemExtent强制子项在滚动方向上具有给定范围。指定itemExtent比让子项自己确定范围更有效,因为滚动机制可以利用子项的范围预知来节省工作,例如当滚动位置发生剧烈变化时。
构造ListView有四个选项:
名称 | 解释 |
---|---|
List <Widget> | 默认构造函数采用子类的显式。此构造函数适用于具有少量子项的列表视图,因为构造List需要为可能在列表视图中显示的每个子项执行工作,而不仅仅是那些实际可见的子项。 |
ListView.builder | 它构造函数采用IndexedWidgetBuilder它根据需要构建子项。此构造函数适用于具有大量(或无限)子项数的列表视图,因为仅为实际可见的子项调用构建器。 |
ListView.separated | 它的构造函数有两个IndexedWidgetBuilder 构建器: itemBuilder 根据需要构建子项,separatorBuilder 类似地构建出现在子项之间的分隔子项。此构造函数适用于具有固定数量子项的列表视图。 |
ListView.custom | 构造需要SliverChildDelegate提供自定义子项的其他方面的能力。例如,SliverChildDelegate可以控制用于估计实际上不可见的子项大小的算法。 |
要控制滚动视图的初始滚动偏移,请为 controller提供其ScrollController.initialScrollOffset属性集。
ListView.builder
名称 | 解释 |
---|---|
Key key | key 值 |
Axis scrollDirection:Axis.vertical | 滚动方向 |
bool reverse:false | 是否反向滚动 |
ScrollController controller | 滚动控制器 |
bool primary | 是否是与父级PrimaryScrollController关联的主滚动视图。如果primary为true,controller必须设置 |
ScrollPhysics physics | [物理滚动方式] |
bool shrinkWrap:false | 滚动方向上的滚动视图的范围是否应由所查看的内容决定。 |
EdgeInsetsGeometry padding | 滚动视图与子项之间的内边距 |
double itemExtent | 子项范围 |
@ required indexedWidgetBuilder itemBuilder | 位置构建器 |
int itemCount | 子项的个数 |
bool addAutomaticKeepAlives:true | 对应于 SliverChildBuilderDelegate.addAutomaticKeepAlives属性。即是否将每个子项包装在AutomaticKeepAlive中。 |
bool addRepaintBoundaries:true | 对应于 SliverChildBuilderDelegate.addRepaintBoundaries属性。是否将每个子项包装在RepaintBoundary中 |
bool addSemanticIndexes:true | 对应于 SliverChildBuilderDelegate.addSemanticIndexes属性。是否将每个子项包装在IndexedSemantics中。 |
double cacheExtent | 视口在可见区域之前和之后有一个区域,用于缓存在用户滚动时即将变为可见的项目。 |
int semanticChildCount | 提供语义信息的孩子的数量 |