initialize method

  1. @override
void initialize()
override

Implementation

@override
void initialize() {
  super.initialize();

  final parentContainerNodes = parentNodes.whereType<ContainerNode>();

  final parentElement = parentContainerNodes.isEmpty
      ? html.document.body!
      : parentContainerNodes.first.element;

  late final int index;

  if (parentContainerNodes.isEmpty) {
    index = 0;
  } else {
    final thisWithParentNodes = [this, ...parentNodes];

    final immediateChildOfParentContainerIndex =
        thisWithParentNodes.indexOf(parentContainerNodes.first) - 1;

    index = parentContainerNodes.first.childNodes
        .indexOf(thisWithParentNodes[immediateChildOfParentContainerIndex]);
  }

  if (parentElement.children.length <= index) {
    parentElement.append(element);
  } else {
    parentElement.insertBefore(element, parentElement.children[index]);
  }

  initializeElement();

  _animation = widget.animation?.runOnElement(element);
}