SmartSliverListView function

Widget SmartSliverListView({
  1. Key? key,
  2. required IndexedWidgetBuilder itemBuilder,
  3. required dynamic itemCount,
  4. double dividerThickness = 0,
  5. Color dividerColor = Colors.transparent,
  6. bool dividerEnd = false,
  7. bool dividerStart = false,
  8. Axis scrollDirection = Axis.vertical,
  9. IndexedWidgetBuilder? separatorBuilder,
  10. ScrollPhysics? physics,
  11. CollectGarbage? collectGarbage,
  12. 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);
        }
      }
    ),
  );
}