hasFutureElement method

bool hasFutureElement({
  1. bool recursive = false,
})

Returns true if this node contains any Future element.

If recursive is false, only direct children are checked. If recursive is true, the entire subtree is traversed using an explicit stack (no recursion), preserving left-to-right DFS order.

See ExternalElementNode.

Implementation

bool hasFutureElement({bool recursive = false}) {
  final content = _content;
  if (content == null || content.isEmpty) return false;

  if (!recursive) {
    // [ExternalElementNode] overwrites `hasFutureElement`.
    return false;
  }

  final stack = <DOMNode>[...content];

  while (stack.isNotEmpty) {
    final node = stack.removeLast();

    if (node.hasFutureElement()) {
      return true;
    }

    final children = node._content;
    if (children != null && children.isNotEmpty) {
      for (var i = children.length - 1; i >= 0; i--) {
        stack.add(children[i]);
      }
    }
  }

  return false;
}