call method
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,
);
}