ClampOverscrolls.inherit({Key key, @required BuildContext context, @required ScrollableEdge edge: ScrollableEdge.none, @required Widget child })

Creates a widget that controls whether viewport descendants will overscroll based on the given edge and the inherited ClampOverscrolls widget for the given context. For example if edge is ScrollableEdge.leading and a ClampOverscrolls ancestor exists that specified ScrollableEdge.trailing, then this widget would clamp both scrollable edges.

The context, edge and child arguments must not be null.

Source

factory ClampOverscrolls.inherit({
  Key key,
  @required BuildContext context,
  @required ScrollableEdge edge: ScrollableEdge.none,
  @required Widget child
}) {
  assert(context != null);
  assert(edge != null);
  assert(child != null);

  // The child's clamped edge is the union of the given edge and the
  // parent's clamped edge.
  ScrollableEdge parentEdge = ClampOverscrolls.of(context)?.edge ?? ScrollableEdge.none;
  ScrollableEdge childEdge = edge;
  switch (parentEdge) {
    case ScrollableEdge.leading:
      if (edge == ScrollableEdge.trailing || edge == ScrollableEdge.both)
        childEdge = ScrollableEdge.both;
      break;
    case ScrollableEdge.trailing:
      if (edge == ScrollableEdge.leading || edge == ScrollableEdge.both)
        childEdge = ScrollableEdge.both;
      break;
    case ScrollableEdge.both:
      childEdge = ScrollableEdge.both;
      break;
    case ScrollableEdge.none:
      break;
  }

  return new ClampOverscrolls(
    key: key,
    edge: childEdge,
    child: child
  );
}