updateChildren method

void updateChildren({
  1. required List<Widget> children,
})

Iterates through children and updates childrenKeyMap and childrenOrderMap.

The update should always be called when the children are changing. With this update, it is possible to have correct animations later to move the children visually.

Implementation

void updateChildren({required List<Widget> children}) {
  var updatedChildrenKeyMap = <dynamic, ReorderableEntity>{};
  var updatedChildrenOrderMap = <int, ReorderableEntity>{};

  var index = 0;
  for (final child in children) {
    final reorderableEntity = getReorderableEntity(
      key: child.key as ValueKey,
      index: index++,
    );
    final originalOrderId = reorderableEntity.originalOrderId;
    updatedChildrenOrderMap[originalOrderId] = reorderableEntity;
    updatedChildrenKeyMap[reorderableEntity.key.value] = reorderableEntity;
  }
  replaceMaps(
    updatedChildrenKeyMap: updatedChildrenKeyMap,
    updatedChildrenOrderMap: updatedChildrenOrderMap,
  );
}