PageView constructor Null safety

PageView(
  1. {Key? key,
  2. Axis scrollDirection = Axis.horizontal,
  3. bool reverse = false,
  4. PageController? controller,
  5. ScrollPhysics? physics,
  6. bool pageSnapping = true,
  7. ValueChanged<int>? onPageChanged,
  8. List<Widget> children = const <Widget>[],
  9. DragStartBehavior dragStartBehavior = DragStartBehavior.start,
  10. bool allowImplicitScrolling = false,
  11. String? restorationId,
  12. Clip clipBehavior = Clip.hardEdge,
  13. ScrollBehavior? scrollBehavior,
  14. bool padEnds = true}
)

Creates a scrollable list that works page by page from an explicit List of widgets.

This constructor is appropriate for page views with a small number of children because constructing the List requires doing work for every child that could possibly be displayed in the page view, instead of just those children that are actually visible.

Like other widgets in the framework, this widget expects that the children list will not be mutated after it has been passed in here. See the documentation at SliverChildListDelegate.children for more details.

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({
  super.key,
  this.scrollDirection = Axis.horizontal,
  this.reverse = false,
  PageController? controller,
  this.physics,
  this.pageSnapping = true,
  this.onPageChanged,
  List<Widget> children = const <Widget>[],
  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 = SliverChildListDelegate(children);