call method

  1. @override
Object? call(
  1. Interpreter interpreter,
  2. List<Object?> arguments,
  3. Map<Symbol, Object?> namedArguments
)
override

Implementation

@override
Object? call(Interpreter interpreter, List<Object?> arguments,
    Map<Symbol, Object?> namedArguments) {
  double maxScale =
      parseDouble(namedArguments[const Symbol('maxScale')]) ?? 2.5;
  double minScale =
      parseDouble(namedArguments[const Symbol('minScale')]) ?? 0.8;
  Clip clipBehavior = Clip.hardEdge;
  var clipBehaviorParse = namedArguments[const Symbol('clipBehavior')];
  if (clipBehaviorParse != null) {
    clipBehavior = clipBehaviorParse as Clip;
  }
  bool constrained = true;
  var constrainedParse = namedArguments[const Symbol('constrained')];
  if (constrainedParse != null) {
    constrained = constrainedParse as bool;
  }
  EdgeInsets boundaryMargin = EdgeInsets.zero;
  var boundaryMarginParse = namedArguments[const Symbol('boundaryMargin')];
  if (boundaryMarginParse != null) {
    boundaryMargin = boundaryMarginParse as EdgeInsets;
  }

  bool panEnabled = true;
  var panEnabledParse = namedArguments[const Symbol('panEnabled')];
  if (panEnabledParse != null) {
    panEnabled = panEnabledParse as bool;
  }
  bool scaleEnabled = true;
  var scaleEnabledParse = namedArguments[const Symbol('scaleEnabled')];
  if (scaleEnabledParse != null) {
    scaleEnabled = scaleEnabledParse as bool;
  }
  var child = namedArguments[const Symbol('child')];
  if (child == null) {
    throw "child required in InteractiveViewer";
  }
  double scaleFactor =
      parseDouble(namedArguments[const Symbol('scaleFactor')]) ??
          kDefaultMouseScrollToScaleFactor;
  Alignment? alignment;
  var alignmentParse = namedArguments[const Symbol('alignment')];
  if (alignmentParse != null) {
    alignment = alignmentParse as Alignment;
  }
  void Function(ScaleStartDetails)? onInteractionStart;
  var onInteractionStartParsed =
      namedArguments[const Symbol('onInteractionStart')];
  if (onInteractionStartParsed != null) {
    onInteractionStart = (details) {
      (onInteractionStartParsed as LoxFunction).call(interpreter, [
        ScaleStartDetailsIns(
            details.focalPoint, details.localFocalPoint, details.pointerCount)
      ], {});
    };
  }
  void Function(ScaleUpdateDetails)? onInteractionUpdate;
  var onInteractionUpdateParsed =
      namedArguments[const Symbol('onInteractionUpdate')];
  if (onInteractionUpdateParsed != null) {
    onInteractionUpdate = (details) {
      (onInteractionUpdateParsed as LoxFunction).call(interpreter, [
        ScaleUpdateDetailsIns(
            details.focalPoint,
            details.localFocalPoint,
            details.scale,
            details.horizontalScale,
            details.verticalScale,
            details.rotation,
            details.pointerCount,
            details.focalPointDelta)
      ], {});
    };
  }
  void Function(ScaleEndDetails)? onInteractionEnd;
  var onInteractionEndParsed =
      namedArguments[const Symbol('onInteractionEnd')];
  if (onInteractionEndParsed != null) {
    onInteractionEnd = (details) {
      (onInteractionEndParsed as LoxFunction).call(interpreter,
          [ScaleEndDetailsIns(details.velocity, details.pointerCount)], {});
    };
  }
  return InteractiveViewer(
    constrained: constrained,
    boundaryMargin: boundaryMargin,
    clipBehavior: clipBehavior,
    minScale: minScale,
    maxScale: maxScale,
    panEnabled: panEnabled,
    scaleEnabled: scaleEnabled,
    alignment: alignment,
    onInteractionStart: onInteractionStart,
    onInteractionUpdate: onInteractionUpdate,
    onInteractionEnd: onInteractionEnd,
    scaleFactor: scaleFactor,
    child: child as Widget,
  );
}