getRenderBox method
Retorna el RenderBox del widget, necesario para calcular posición y tamaño.
Estrategia dual:
- Si el widget usa getGlobalKey como key → usa globalKey.currentContext
- Si el widget usa McpMetadataKey directo como key → camina el element tree buscando el primer elemento cuyo widget.key tenga el mismo id, luego retorna su primer RenderBox descendiente.
Implementation
RenderBox? getRenderBox(String id) {
// Estrategia 1: GlobalKey interna (flujo original)
final context = getContext(id);
if (context != null) {
final rb = context.findRenderObject() as RenderBox?;
if (rb != null) return rb;
}
// Estrategia 2: McpMetadataKey usado directamente en el árbol
RenderBox? found;
void visitElement(Element el) {
if (found != null) return;
final key = el.widget.key;
if (key is McpMetadataKey && key.id == id) {
found = _firstRenderBox(el);
return;
}
el.visitChildElements(visitElement);
}
WidgetsBinding.instance.rootElement?.visitChildElements(visitElement);
return found;
}