handleCreatedChild method
ReorderableEntity
handleCreatedChild({
- required Offset? offset,
- required Size size,
- required ReorderableEntity reorderableEntity,
Updates specific values of reorderableEntity and update maps.
When the child was created, offset will be added to offsetMap
to simplify the access to the offset of the order id of reorderableEntity.
Then #creationFinished is called that updates some important values.
In the end, the childrenOrderMap and childrenKeyMap are updated.
Implementation
ReorderableEntity handleCreatedChild({
required Offset? offset,
required Size size,
required ReorderableEntity reorderableEntity,
}) {
// children that appear for the first time while dragging (e.g. while
// scrolling) have no offset yet and must be measured
final isMeasured = offsetMap[reorderableEntity.updatedOrderId] != null;
final existingReorderableEntity = isMeasured
? _getExistingEntityWhileDragging(
reorderableEntity: reorderableEntity,
isBuildingOffset: true,
)
: null;
if (existingReorderableEntity != null) return existingReorderableEntity;
if (offset != null) {
offsetMap[reorderableEntity.updatedOrderId] = offset;
}
var updatedEntity = reorderableEntity.creationFinished(
offset: offset,
size: size,
);
// while dragging, the child hasn't moved yet, so without the same original
// offset, it would animate from its old (unknown) offset
if (draggedEntity != null && !updatedEntity.isNew) {
updatedEntity = updatedEntity.positionUpdated();
}
_updateMaps(reorderableEntity: updatedEntity);
return updatedEntity;
}