Entry constructor

Entry({
  1. Element? element,
  2. Entry? parent,
  3. int? index,
})

Implementation

Entry({this.element, this.parent, this.index})
    : widget = element?.widget,
      key = element?.key,
      renderObject = element?.renderObject,
      size = element?.renderObject is! RenderBox ? Size(PxUtils().getScreenWidth, PxUtils().getScreenHeight) : element?.size,
      // ignore: invalid_use_of_protected_member
      layer = element?.renderObject?.layer {
  var entries = element?.children.map<Entry>(
    (e) => Entry(element: e, parent: this, index: index),
  );
  children = LinkedList<Entry>()..addAll(entries ?? []);

  // find unlinked layers
  if (renderObject != null && layer == null) {
    Entry? tmp = parent;
    if (tmp?.element is! RenderObjectElement) {
      tmp = tmp?.parent;
    } else {
      return;
    }
  }

  children?.forEach((entity) {
    if (entity.layer == null) {
      Layer? nextLayer = entity.previous?.layer?.nextSibling;
      bool isUnlinkedLayer = [PictureLayer, PerformanceOverlayLayer, TextureLayer].contains(nextLayer.runtimeType);
      if (nextLayer != null && isUnlinkedLayer) {
        entity.layer = nextLayer;
      }
    }
  });
}