logWidgetTree function

Future<List<Map<String, dynamic>>> logWidgetTree()

Log tree from current screen frame.

Implementation

Future<List<Map<String, dynamic>>> logWidgetTree() async {
  final completer = Completer<List<Map<String, dynamic>>>();

  WidgetsBinding.instance.addPostFrameCallback((_) async {
    WidgetsFlutterBinding.ensureInitialized();

    // Wait for the microtask to complete after the frame rendering
    await SchedulerBinding.instance.endOfFrame;

    final element = WidgetsBinding.instance.rootElement;
    if (element != null) {
      completer.complete(parseWidgetTree(element));
    } else {
      completer.completeError('Failed to retrieve the render view element');
    }
  });

  return completer.future;
}