BidirectionalListView.separated constructor
BidirectionalListView.separated({
- Key? key,
- Axis scrollDirection = Axis.vertical,
- BidirectionalScrollController? controller,
- ScrollPhysics? physics,
- EdgeInsets? padding,
- required IndexedWidgetBuilder itemBuilder,
- required IndexedWidgetBuilder separatorBuilder,
- int? itemCount,
- int? negativeItemCount,
- bool addAutomaticKeepAlives = true,
- bool addRepaintBoundaries = true,
- double? cacheExtent,
- 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);