SmartListView function
ScrollView
SmartListView({
- Key? key,
- required IndexedWidgetBuilder itemBuilder,
- required dynamic itemCount,
- double dividerThickness = 0,
- Color dividerColor = Colors.transparent,
- double? cacheExtent,
- bool dividerEnd = false,
- bool dividerStart = false,
- Axis scrollDirection = Axis.vertical,
- IndexedWidgetBuilder? separatorBuilder,
- ScrollPhysics? physics,
- CollectGarbage? collectGarbage,
- ViewPortBuilder? viewportBuilder,
- bool shrinkWrap = false,
- bool useListView = false,
- ScrollController? scrollController,
Implementation
ScrollView SmartListView({
Key? key,
///item渲染器
required IndexedWidgetBuilder itemBuilder,
///数据个数
required itemCount,
///分割线高度
double dividerThickness = 0,
///分割线颜色
Color dividerColor = Colors.transparent,
///缓存高度
double? cacheExtent,
///是否包含开头分割线
bool dividerEnd = false,
///是否包含结尾分割线
bool dividerStart = false,
///滑动方向
Axis scrollDirection = Axis.vertical,
///分割线渲染器
IndexedWidgetBuilder? separatorBuilder,
///滑动模式
ScrollPhysics? physics,
///列表元素回收
CollectGarbage? collectGarbage,
///追踪进入 Viewport 的列表元素的 index(即你看到的可视区域,并不包括缓存距离)
ViewPortBuilder? viewportBuilder,
///是否计算item尺寸
bool shrinkWrap = false,
///是否使用Column
bool useListView = false,
///滑动控制器
ScrollController? scrollController,
}){
bool hasDivider = _hasDivider(
dividerThickness: dividerThickness,
separatorBuilder: separatorBuilder
);
///无分割线,使用普通的listview
return ExtendedListView.custom(
shrinkWrap: shrinkWrap,
cacheExtent: cacheExtent,
scrollDirection: scrollDirection,
controller: scrollController,
childrenDelegate: _getSliverChildDelegate(
itemBuilder: itemBuilder,
separatorBuilder: separatorBuilder,
scrollDirection: scrollDirection,
dividerStart: dividerStart,
dividerEnd: dividerEnd,
dividerColor: dividerColor,
dividerThickness: dividerThickness,
itemCount: itemCount
),
extendedListDelegate: ExtendedListDelegate(
collectGarbage: collectGarbage,
viewportBuilder: (first, last){
if(hasDivider){
viewportBuilder?.call(first ~/ 2, last ~/ 2);
}else{
viewportBuilder?.call(first, last);
}
}
),
);
}