InteractiveViewer.builder constructor
- Key? key,
- Clip clipBehavior = Clip.hardEdge,
- PanAxis panAxis = PanAxis.free,
- EdgeInsets boundaryMargin = EdgeInsets.zero,
- double maxScale = 2.5,
- double minScale = 0.8,
- double interactionEndFrictionCoefficient = _kDrag,
- GestureScaleEndCallback? onInteractionEnd,
- GestureScaleStartCallback? onInteractionStart,
- GestureScaleUpdateCallback? onInteractionUpdate,
- bool panEnabled = true,
- bool scaleEnabled = true,
- double scaleFactor = 200.0,
- TransformationController? transformationController,
- Alignment? alignment,
- bool trackpadScrollCausesScale = false,
- required InteractiveViewerWidgetBuilder builder,
Creates an InteractiveViewer for a child that is created on demand.
Can be used to render a child that changes in response to the current transformation.
See the builder
attribute docs for an example of using it to optimize a
large child.
Implementation
InteractiveViewer.builder({
super.key,
this.clipBehavior = Clip.hardEdge,
this.panAxis = PanAxis.free,
this.boundaryMargin = EdgeInsets.zero,
// These default scale values were eyeballed as reasonable limits for common
// use cases.
this.maxScale = 2.5,
this.minScale = 0.8,
this.interactionEndFrictionCoefficient = _kDrag,
this.onInteractionEnd,
this.onInteractionStart,
this.onInteractionUpdate,
this.panEnabled = true,
this.scaleEnabled = true,
this.scaleFactor = 200.0,
this.transformationController,
this.alignment,
this.trackpadScrollCausesScale = false,
required InteractiveViewerWidgetBuilder this.builder,
}) : assert(minScale > 0),
assert(interactionEndFrictionCoefficient > 0),
assert(minScale.isFinite),
assert(maxScale > 0),
assert(!maxScale.isNaN),
assert(maxScale >= minScale),
// boundaryMargin must be either fully infinite or fully finite, but not
// a mix of both.
assert(
(boundaryMargin.horizontal.isInfinite && boundaryMargin.vertical.isInfinite) ||
(boundaryMargin.top.isFinite &&
boundaryMargin.right.isFinite &&
boundaryMargin.bottom.isFinite &&
boundaryMargin.left.isFinite),
),
constrained = false,
child = null;