visitChildrenAndTextRenderers method
Walks this RenderObject tree in a depth-first pre-order traversal,
calling visitor
for each child.
If visitor
returns true, the walk continues, otherwise it is canceled.
Implementation
bool visitChildrenAndTextRenderers(CancelableObjectVisitor visitor) {
var canceled = false;
late void Function(Object object) visitChildrenRecursively;
void recursiveRenderObjectVisitor(RenderObject object) {
// This is called for every child of the render object, even after the
// [visitor] function may have returned `false` for one of the children,
// so check if canceled before handling.
if (!canceled) {
canceled = !visitor(object);
if (!canceled) visitChildrenRecursively(object);
}
}
bool recursiveObjectVisitor(Object object) {
canceled = !visitor(object);
if (!canceled) visitChildrenRecursively(object);
return !canceled;
}
visitChildrenRecursively = (object) {
if (object is VisitChildrenOfAnyTypeMixin) {
canceled = !object.visitChildrenOfAnyType(recursiveObjectVisitor);
} else if (object is RenderObject) {
object.visitChildren(recursiveRenderObjectVisitor);
}
};
visitChildrenRecursively(this);
return !canceled;
}