captureScreenContext method
Capture a snapshot of the current screen's UI elements.
Implementation
ScreenContext captureScreenContext() {
final views = WidgetsBinding.instance.renderViews;
if (views.isEmpty) {
AiLogger.warn(
'No render views available for screen capture',
tag: 'Semantics',
);
return ScreenContext.empty();
}
final owner = views.first.owner?.semanticsOwner;
final root = owner?.rootSemanticsNode;
if (root == null) {
AiLogger.warn(
'No root semantics node — tree may not be ready',
tag: 'Semantics',
);
return ScreenContext.empty();
}
final elements = <UiElement>[];
_walkNode(root, elements, depth: 0, parentLabels: []);
AiLogger.log(
'Screen captured: ${elements.length} elements '
'(${elements.where((e) => e.availableActions.isNotEmpty).length} interactive)',
tag: 'Semantics',
);
return ScreenContext(elements: elements, capturedAt: DateTime.now());
}