onDragDrop method
Implementation
void onDragDrop(IDragDrop droppable, IDragDrop draggable,
{Offset? dropSpot}) async {
if (droppable is MenuItemModel && draggable is MenuItemModel) {
// fire onDrop event
await DragDrop.onDrop(droppable, draggable, dropSpot: dropSpot);
// get drag and drop index
var dragIndex = items.indexOf(draggable);
var dropIndex = items.indexOf(droppable);
//var center = DragDrop.getPercentOffset(dropBox, dropSpot);
// move the cell in the items list
if (dragIndex >= 0 && dropIndex >= 0 && dragIndex != dropIndex) {
// move the cell in the dataset
notificationsEnabled = false;
myDataSource?.move(dragIndex, dropIndex, notifyListeners: false);
data = myDataSource?.data ?? data;
notificationsEnabled = true;
// remove drag item from the list
items.remove(draggable);
// add drag item back into the list at drop index
var moveUp = (dragIndex < dropIndex);
var index = moveUp ? dropIndex - 1 : dropIndex;
items.insert(index, draggable);
// notify listeners
notifyListeners('list', items);
}
}
}