SuperSliverList.separated constructor

SuperSliverList.separated({
  1. Key? key,
  2. required NullableIndexedWidgetBuilder itemBuilder,
  3. ChildIndexGetter? findChildIndexCallback,
  4. required NullableIndexedWidgetBuilder separatorBuilder,
  5. ExtentPrecalculationPolicy? extentPrecalculationPolicy,
  6. ListController? listController,
  7. ExtentEstimationProvider? extentEstimation,
  8. bool delayPopulatingCacheArea = true,
  9. bool layoutKeptAliveChildren = false,
  10. int? itemCount,
  11. bool addAutomaticKeepAlives = true,
  12. bool addRepaintBoundaries = true,
  13. bool addSemanticIndexes = true,
})

Creates a SuperSliverList from widget builder separated by separator widgets.

See SliverList.separated for details.

Implementation

SuperSliverList.separated({
  super.key,
  required NullableIndexedWidgetBuilder itemBuilder,
  ChildIndexGetter? findChildIndexCallback,
  required NullableIndexedWidgetBuilder separatorBuilder,
  this.extentPrecalculationPolicy,
  this.listController,
  this.extentEstimation,
  this.delayPopulatingCacheArea = true,
  this.layoutKeptAliveChildren = false,
  int? itemCount,
  bool addAutomaticKeepAlives = true,
  bool addRepaintBoundaries = true,
  bool addSemanticIndexes = true,
}) : super(
        delegate: SliverChildBuilderDelegate(
          (BuildContext context, int index) {
            final int itemIndex = index ~/ 2;
            final Widget? widget;
            if (index.isEven) {
              widget = itemBuilder(context, itemIndex);
            } else {
              widget = separatorBuilder(context, itemIndex);
              assert(() {
                if (widget == null) {
                  throw FlutterError("separatorBuilder cannot return null.");
                }
                return true;
              }());
            }
            return widget;
          },
          findChildIndexCallback: findChildIndexCallback,
          childCount:
              itemCount == null ? null : math.max(0, itemCount * 2 - 1),
          addAutomaticKeepAlives: addAutomaticKeepAlives,
          addRepaintBoundaries: addRepaintBoundaries,
          addSemanticIndexes: addSemanticIndexes,
          semanticIndexCallback: (Widget _, int index) {
            return index.isEven ? index ~/ 2 : null;
          },
        ),
      );