resolveParentUIComponent static method

void resolveParentUIComponent({
  1. UINode? parent,
  2. UINode? element,
  3. UIComponent? parentUIComponent,
  4. UIComponent? elementUIComponent,
  5. bool recursive = false,
})

Implementation

static void resolveParentUIComponent({
  UINode? parent,
  UINode? element,
  UIComponent? parentUIComponent,
  UIComponent? elementUIComponent,
  bool recursive = false,
}) {
  if ((parent == null && parentUIComponent == null) ||
      (element == null && elementUIComponent == null)) {
    return;
  }

  if (elementUIComponent == null) {
    var element2 = element?.asElementChecked;
    if (element2 != null) {
      elementUIComponent = _resolveNodeUIComponent(element2);
    }

    if (elementUIComponent == null) {
      if (recursive && element2 != null && element2.hasUIChildren) {
        if (parentUIComponent == null && parent.isElement) {
          parentUIComponent = _resolveNodeUIComponent(
            parent as Element,
            getUIComponentByChild: true,
          );
        }

        if (parentUIComponent != null) {
          for (var child in element2.children.toIterable()) {
            resolveParentUIComponent(
              parent: parent,
              parentUIComponent: parentUIComponent,
              element: child,
            );
          }
        }
      }

      return;
    }
  }

  if (elementUIComponent._parentUIComponent != null) {
    elementUIComponent._resolveParentFromParentUIComponent();
    return;
  }

  if (parentUIComponent == null && parent.isElement) {
    parentUIComponent = _resolveNodeUIComponent(
      parent as Element,
      getUIComponentByChild: true,
    );
  }

  if (parentUIComponent != null) {
    elementUIComponent._setParentUIComponent(parentUIComponent);
  } else {
    elementUIComponent._resolveParentUIComponent(
      parent ?? parentUIComponent ?? elementUIComponent._parent,
    );
  }
}