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();
}