SmartSliverListView function
Widget
SmartSliverListView({
- Key? key,
- required IndexedWidgetBuilder itemBuilder,
- required dynamic itemCount,
- double dividerThickness = 0,
- Color dividerColor = Colors.transparent,
- bool dividerEnd = false,
- bool dividerStart = false,
- Axis scrollDirection = Axis.vertical,
- IndexedWidgetBuilder? separatorBuilder,
- ScrollPhysics? physics,
- CollectGarbage? collectGarbage,
- ViewPortBuilder? viewportBuilder,
Implementation
Widget SmartSliverListView({
Key? key,
///item渲染器
required IndexedWidgetBuilder itemBuilder,
///数据个数
required itemCount,
///分割线高度
double dividerThickness = 0,
///分割线颜色
Color dividerColor = Colors.transparent,
///是否包含开头分割线
bool dividerEnd = false,
///是否包含结尾分割线
bool dividerStart = false,
///滑动方向
Axis scrollDirection = Axis.vertical,
///分割线渲染器
IndexedWidgetBuilder? separatorBuilder,
///滑动模式
ScrollPhysics? physics,
///列表元素回收
CollectGarbage? collectGarbage,
///追踪进入 Viewport 的列表元素的 index(即你看到的可视区域,并不包括缓存距离)
ViewPortBuilder? viewportBuilder,
}){
bool hasDivider = _hasDivider(
dividerThickness: dividerThickness,
separatorBuilder: separatorBuilder
);
return ExtendedSliverList(
delegate: _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);
}
}
),
);
}