perform method
Implementation
Future<void> perform(CockpitGestureAction action) async {
final geometry = _resolveGeometry(action);
final origin = _resolvePrimaryOrigin(action, geometry);
switch (action.type) {
case CockpitGestureActionType.tap:
await _performTap(
geometry,
origin: origin,
pointerDeviceKind: action.pointerDeviceKind,
buttons: action.buttons,
);
case CockpitGestureActionType.longPress:
await _performLongPress(
geometry,
action.duration,
origin: origin,
pointerDeviceKind: action.pointerDeviceKind,
buttons: action.buttons,
);
case CockpitGestureActionType.doubleTap:
await _performDoubleTap(
geometry,
action.interval,
origin: origin,
pointerDeviceKind: action.pointerDeviceKind,
buttons: action.buttons,
);
case CockpitGestureActionType.drag:
await _performDrag(
geometry: geometry,
origin: origin,
delta: action.delta,
duration: action.duration,
holdDuration: action.holdDuration,
touchSlopX: action.touchSlopX,
touchSlopY: action.touchSlopY,
moveEventCount: action.moveEventCount,
profile: action.profile,
sampleHz: action.sampleHz,
frameInterval: action.frameInterval,
initialHoldDuration: action.initialHoldDuration,
pointerDeviceKind: action.pointerDeviceKind,
buttons: action.buttons,
);
case CockpitGestureActionType.fling:
await _performFling(
geometry: geometry,
origin: origin,
delta: action.delta,
duration: action.duration,
moveEventCount: action.moveEventCount,
profile: action.profile,
sampleHz: action.sampleHz,
frameInterval: action.frameInterval,
initialHoldDuration: action.initialHoldDuration,
pointerDeviceKind: action.pointerDeviceKind,
buttons: action.buttons,
);
case CockpitGestureActionType.swipe:
await _performSwipe(
geometry: geometry,
origin: origin,
useExplicitOrigin:
action.origin != null ||
action.anchor != CockpitGestureAnchor.center,
direction: action.direction,
distanceFactor: action.distanceFactor,
duration: action.duration,
moveEventCount: action.moveEventCount,
profile: action.profile,
sampleHz: action.sampleHz,
frameInterval: action.frameInterval,
initialHoldDuration: action.initialHoldDuration,
pointerDeviceKind: action.pointerDeviceKind,
buttons: action.buttons,
);
case CockpitGestureActionType.pinchZoom:
await _performPinchZoom(
geometry: geometry,
origin: origin,
scale: action.scale,
startSpan: action.startSpan,
duration: action.duration,
moveEventCount: action.moveEventCount,
profile: action.profile,
sampleHz: action.sampleHz,
frameInterval: action.frameInterval,
initialHoldDuration: action.initialHoldDuration,
);
case CockpitGestureActionType.rotate:
await _performRotate(
geometry: geometry,
origin: origin,
rotation: action.rotation,
startSpan: action.startSpan,
duration: action.duration,
moveEventCount: action.moveEventCount,
profile: action.profile,
sampleHz: action.sampleHz,
frameInterval: action.frameInterval,
initialHoldDuration: action.initialHoldDuration,
);
case CockpitGestureActionType.panZoom:
await _performPanZoom(
geometry: geometry,
origin: origin,
delta: action.delta,
scale: action.scale,
rotation: action.rotation,
duration: action.duration,
moveEventCount: action.moveEventCount,
profile: action.profile,
sampleHz: action.sampleHz,
frameInterval: action.frameInterval,
initialHoldDuration: action.initialHoldDuration,
);
case CockpitGestureActionType.multiTouch:
final sequence = action.sequence;
if (sequence == null) {
throw ArgumentError.value(
action.sequence,
'action.sequence',
'Multi-touch actions require a sequence.',
);
}
await _performMultiTouch(
geometry: geometry,
origin: origin,
sequence: sequence,
);
}
}