BidirectionalListView.separated constructor

BidirectionalListView.separated({
  1. Key? key,
  2. Axis scrollDirection = Axis.vertical,
  3. BidirectionalScrollController? controller,
  4. ScrollPhysics? physics,
  5. EdgeInsets? padding,
  6. required IndexedWidgetBuilder itemBuilder,
  7. required IndexedWidgetBuilder separatorBuilder,
  8. int? itemCount,
  9. int? negativeItemCount,
  10. bool addAutomaticKeepAlives = true,
  11. bool addRepaintBoundaries = true,
  12. double? cacheExtent,
  13. double anchor = 0.0,
})

Implementation

BidirectionalListView.separated({
  Key? key,
  this.scrollDirection = Axis.vertical,
  BidirectionalScrollController? controller,
  this.physics,
  this.padding,
  required IndexedWidgetBuilder itemBuilder,
  required IndexedWidgetBuilder separatorBuilder,
  int? itemCount,
  int? negativeItemCount,
  bool addAutomaticKeepAlives = true,
  bool addRepaintBoundaries = true,
  this.cacheExtent,
  this.anchor = 0.0,
})  : assert(itemBuilder != null),
      assert(separatorBuilder != null),
      itemExtent = null,
      positiveChildrenDelegate = SliverChildBuilderDelegate(
        (BuildContext context, int index) {
          final itemIndex = index ~/ 2;
          return index.isEven
              ? itemBuilder(context, itemIndex)
              : separatorBuilder(context, itemIndex);
        },
        childCount: itemCount != null ? math.max(0, itemCount * 2 - 1) : null,
        addAutomaticKeepAlives: addAutomaticKeepAlives,
        addRepaintBoundaries: addRepaintBoundaries,
      ),
      negativeChildrenDelegate = SliverChildBuilderDelegate(
        (BuildContext context, int index) {
          final itemIndex = (-1 - index) ~/ 2;
          return index.isOdd
              ? itemBuilder(context, itemIndex)
              : separatorBuilder(context, itemIndex);
        },
        childCount: negativeItemCount,
        addAutomaticKeepAlives: addAutomaticKeepAlives,
        addRepaintBoundaries: addRepaintBoundaries,
      ),
      controller = controller ?? BidirectionalScrollController(),
      super(key: key);