PageView.builder constructor Null safety
- {Key? key,
- Axis scrollDirection = Axis.horizontal,
- bool reverse = false,
- PageController? controller,
- ScrollPhysics? physics,
- bool pageSnapping = true,
- ValueChanged<
int> ? onPageChanged, - required IndexedWidgetBuilder itemBuilder,
- ChildIndexGetter? findChildIndexCallback,
- int? itemCount,
- DragStartBehavior dragStartBehavior = DragStartBehavior.start,
- bool allowImplicitScrolling = false,
- String? restorationId,
- Clip clipBehavior = Clip.hardEdge,
- ScrollBehavior? scrollBehavior,
- bool padEnds = true}
Creates a scrollable list that works page by page using widgets that are created on demand.
This constructor is appropriate for page views with a large (or infinite) number of children because the builder is called only for those children that are actually visible.
Providing a non-null itemCount
lets the PageView compute the maximum
scroll extent.
itemBuilder
will be called only with indices greater than or equal to
zero and less than itemCount
.
The findChildIndexCallback
corresponds to the
SliverChildBuilderDelegate.findChildIndexCallback property. If null,
a child widget may not map to its existing RenderObject when the order
of children returned from the children builder changes.
This may result in state-loss. This callback needs to be implemented if
the order of the children may change at a later time.
The allowImplicitScrolling parameter must not be null. If true, the PageView will participate in accessibility scrolling more like a ListView, where implicit scroll actions will move to the next page rather than into the contents of the PageView.
Implementation
PageView.builder({
super.key,
this.scrollDirection = Axis.horizontal,
this.reverse = false,
PageController? controller,
this.physics,
this.pageSnapping = true,
this.onPageChanged,
required IndexedWidgetBuilder itemBuilder,
ChildIndexGetter? findChildIndexCallback,
int? itemCount,
this.dragStartBehavior = DragStartBehavior.start,
this.allowImplicitScrolling = false,
this.restorationId,
this.clipBehavior = Clip.hardEdge,
this.scrollBehavior,
this.padEnds = true,
}) : assert(allowImplicitScrolling != null),
assert(clipBehavior != null),
controller = controller ?? _defaultPageController,
childrenDelegate = SliverChildBuilderDelegate(
itemBuilder,
findChildIndexCallback: findChildIndexCallback,
childCount: itemCount,
);