getRootWidget method
Implementation
Future<RPCResponse> getRootWidget() async {
final treeManager = _treeGroupManager;
if (treeManager == null) {
return RPCResponse.error('Service is not connected.');
}
final group = treeManager.next;
try {
final callMethodName =
'$flutterInspectorName.'
'${WidgetInspectorServiceExtensions.getRootWidgetTree.name}';
final rootWidgetTree = await serviceManager
.callServiceExtensionOnMainIsolate(
callMethodName,
args: {
'groupName': group.groupName,
'isSummaryTree': 'true',
'withPreviews': 'false',
'fullDetails': 'false',
},
);
print('Root widget tree: $rootWidgetTree');
if (rootWidgetTree.json == null) {
await treeManager.cancelNext();
return RPCResponse.error(
'Root widget tree not available, '
'rootWidgetTree: ${rootWidgetTree.toJson()}',
);
}
if (group.disposed) {
// Handle cancellation
print('Object group disposed, handling cancellation');
return RPCResponse.error('Object group disposed');
}
await treeManager.promoteNext();
return RPCResponse.successMap(rootWidgetTree.json!);
} catch (e, stackTrace) {
print('Error getting root widget tree: $e');
print('Stack trace: $stackTrace');
await _treeGroupManager?.cancelNext();
return RPCResponse.error(
'Error getting root widget tree: $e',
stackTrace,
);
}
}