onDrop static method
Implementation
static Future<bool> onDrop(IDragDrop droppable, IDragDrop draggable,
{RenderBox? dragBox, RenderBox? dropBox, Offset? dropSpot}) async {
bool ok = true;
// same object dropped on itself
if (draggable == droppable) return ok;
// original data
var original = droppable.drop;
// set drop data
droppable.drop = draggable.data;
// fire onDrop event of the droppable
if (ok) {
// expression
var expression = droppable.onDropObservable?.signature ??
droppable.onDropObservable?.value;
// bindings
var bindings = draggable.onDropObservable?.bindings;
// variables
var variables = EventHandler.getVariables(
bindings, droppable as WidgetModel, draggable as WidgetModel,
localAliasNames: ['this', 'drop'], remoteAliasNames: ['drag']);
// execute event
ok = await EventHandler(droppable as WidgetModel)
.executeExpression(expression, variables);
}
// fire onDropped event of the draggable
if (ok) {
// expression
var expression = draggable.onDroppedObservable?.signature ??
draggable.onDroppedObservable?.value;
// bindings
var bindings = draggable.onDroppedObservable?.bindings;
// variables
var variables = EventHandler.getVariables(
bindings, draggable as WidgetModel, droppable as WidgetModel,
localAliasNames: ['this', 'drag'], remoteAliasNames: ['drop']);
// execute event
ok = await EventHandler(draggable as WidgetModel)
.executeExpression(expression, variables);
}
// undo data
if (!ok) droppable.drop = original;
return ok;
}