moveLeft method

void moveLeft()

Implementation

void moveLeft() {
  var item = widget.lists![draggedListIndex!].items![draggedItemIndex!];
  var itemState = listStates[draggedListIndex!].itemStates[draggedItemIndex!];
  widget.lists![draggedListIndex!].items!.removeAt(draggedItemIndex!);
  listStates[draggedListIndex!].itemStates.removeAt(draggedItemIndex!);
  if(listStates[draggedListIndex!].mounted) {
    listStates[draggedListIndex!].setState(() {});
  }
  if(draggedListIndex != null){
    draggedListIndex = draggedListIndex! - 1;
  }
  double closestValue = 10000;
  draggedItemIndex = 0;
  for (int i = 0; i < listStates[draggedListIndex!].itemStates.length; i++) {
    if (listStates[draggedListIndex!].itemStates[i].mounted && listStates[draggedListIndex!].itemStates[i].context != null) {
      RenderBox box = listStates[draggedListIndex!].itemStates[i].context.findRenderObject() as RenderBox;
      Offset pos = box.localToGlobal(Offset.zero);
      var temp = (pos.dy - dy! + (box.size.height / 2)).abs();
      if (temp < closestValue) {
        closestValue = temp;
        draggedItemIndex = i;
        dyInit = dy;
      }
    }
  }
  widget.lists![draggedListIndex!].items!.insert(draggedItemIndex!, item);
  listStates[draggedListIndex!].itemStates.insert(draggedItemIndex!, itemState);
  canDrag = false;
  if(listStates[draggedListIndex!].mounted) {
    listStates[draggedListIndex!].setState(() {});
  }
  if (boardViewController != null && boardViewController.hasClients) {
    int? tempListIndex = draggedListIndex;
    int? tempItemIndex = draggedItemIndex;
    boardViewController
        .animateTo(draggedListIndex! * widget.width, duration: new Duration(milliseconds: 400), curve: Curves.ease)
        .whenComplete(() {
      RenderBox object = listStates[tempListIndex!].context.findRenderObject() as RenderBox;
      Offset pos = object.localToGlobal(Offset.zero);
      leftListX = pos.dx;
      rightListX = pos.dx + object.size.width;
      RenderBox box = listStates[tempListIndex].itemStates[tempItemIndex!].context.findRenderObject() as RenderBox;
      Offset itemPos = box.localToGlobal(Offset.zero);
      topItemY = itemPos.dy;
      bottomItemY = itemPos.dy + box.size.height;
      Future.delayed(new Duration(milliseconds: widget.dragDelay), () {
        canDrag = true;
      });
    });
  }
  if(mounted) {
    setState(() {});
  }
}