DragInfo.from constructor

DragInfo.from({
  1. required Offset begin,
  2. required Offset end,
  3. required Element pageElement,
  4. required PageInfo pageInfo,
  5. required int duration,
})

Implementation

factory DragInfo.from(
    {required Offset begin,
    required Offset end,
    required Element pageElement,
    required PageInfo pageInfo,
    required int duration}) {
  DragInfo dragInfo = DragInfo._(pageInfo);
  dragInfo._beginOffset = begin;
  dragInfo._endOffset = end;
  dragInfo._duration = duration;
  dragInfo._ignore = pageInfo.ignore;

  double dx = dragInfo.endOffset.dx - dragInfo.beginOffset.dx;
  double dy = dragInfo.endOffset.dy - dragInfo.beginOffset.dy;

  var direction = 'down';
  if (dx.abs() > dy.abs()) {
    if (dx > 0) {
      direction = 'right';
    } else {
      direction = 'left';
    }
  } else if (dy.abs() > dx.abs()) {
    if (dy > 0) {
      direction = 'down';
    } else {
      direction = 'up';
    }
  } else {
    direction = 'none';
  }
  dragInfo._direction = direction;

  return dragInfo;
}