onDragDrop method
Implementation
void onDragDrop(IDragDrop droppable, IDragDrop draggable,
{Offset? dropSpot}) async {
if (droppable is GridItemModel && draggable is GridItemModel) {
// fire onDrop event
await DragDrop.onDrop(droppable, draggable, dropSpot: dropSpot);
// get drag and drop index
var dragIndex = items.entries
.firstWhereOrNull((element) => element.value == draggable)
?.key;
var dropIndex = items.entries
.firstWhereOrNull((element) => element.value == droppable)
?.key;
// move the cell in the items list
if (dragIndex != null && dropIndex != null && dragIndex != dropIndex) {
// reorder hashmap
moveInHashmap(items, dragIndex, dropIndex);
// reorder data
notificationsEnabled = false;
myDataSource?.move(dragIndex, dropIndex, notifyListeners: false);
data = myDataSource?.data ?? data;
notificationsEnabled = true;
// notify listeners
notifyListeners('list', items);
}
}
}