onPointerUp method

  1. @override
void onPointerUp(
  1. int pointerId,
  2. Offset offset,
  3. Map<int, Offset> pointers
)
override

Implementation

@override
void onPointerUp(int pointerId, Offset offset, Map<int, Offset> pointers) {
  if (!_moveActive) {
    return;
  }
  super.onPointerUp(pointerId, offset, pointers);
  cancelTimer();

  if (_swipeTimer != null) {
    // swipe still active
    _swipeTimer?.cancel();
    _swipeTimer = null;
    _swipeOffset = null;
    return;
  }
  velocityCalculator.addEvent(offset);
  // calculate the offset per iteration
  _swipeOffset = velocityCalculator.lastVelocity.offsetPerMillisecond * _swipeSleepMs.toDouble();
  if (mapModel.lastPosition?.rotation != 0) {
    double hyp = sqrt(_swipeOffset!.dx * _swipeOffset!.dx + _swipeOffset!.dy * _swipeOffset!.dy);
    double rad = atan2(_swipeOffset!.dy, _swipeOffset!.dx);
    double rot = mapModel.lastPosition!.rotationRadian;
    _swipeOffset = Offset(cos(-rot + rad) * hyp, sin(-rot + rad) * hyp);
    // print(
    //     "diff: $diffX/$diffY @ ${widget.viewModel.mapViewPosition!.rotation}($rad) from ${(details.localFocalPoint.dx - _startLocalFocalPoint!.dx) * widget.viewModel.viewScaleFactor}/${(details.localFocalPoint.dy - _startLocalFocalPoint!.dy) * widget.viewModel.viewScaleFactor}");
  }
  _swipeTimer = Timer.periodic(Duration(milliseconds: _swipeSleepMs), (timer) {
    _swipeTimerProcess();
  });
}