allNodes property

List<WidgetTreeNode> allNodes

Returns all WidgetTreeNode in tree in depth-first order

Implementation

List<WidgetTreeNode> get allNodes {
  _ensureSnapshotIsFromThisFrame();
  final List<WidgetTreeNode> depthFirstElements = [];
  final List<WidgetTreeNode> stack = [];

  void fill(WidgetTreeNode snapshot) {
    final List<WidgetTreeNode> reversed = <WidgetTreeNode>[];
    for (final WidgetTreeNode child in snapshot.children) {
      reversed.add(child);
    }
    while (reversed.isNotEmpty) {
      stack.add(reversed.removeLast());
    }
  }

  fill(origin);
  while (stack.isNotEmpty) {
    final next = stack.removeLast();
    depthFirstElements.add(next);
    fill(next);
  }
  return depthFirstElements.toList();
}