moveRight method
void
moveRight()
Implementation
void moveRight() {
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) {
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.hasClients) {
int? tempListIndex = draggedListIndex;
int? tempItemIndex = draggedItemIndex;
boardViewController
.animateTo(draggedListIndex! * widget.width,
duration: const 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(Duration(milliseconds: widget.dragDelay), () {
canDrag = true;
});
});
}
if (mounted) {
setState(() {});
}
}