debugTransformDebugCreator function

Iterable<DiagnosticsNode> debugTransformDebugCreator(
  1. Iterable<DiagnosticsNode> properties
)

Transformer to parse and gather information about DiagnosticsDebugCreator.

This function will be registered to FlutterErrorDetails.propertiesTransformers in WidgetsBinding.initInstances.

This is meant to be called only in debug mode. In other modes, it yields an empty list.

Implementation

Iterable<DiagnosticsNode> debugTransformDebugCreator(Iterable<DiagnosticsNode> properties) {
  if (!kDebugMode) {
    return <DiagnosticsNode>[];
  }
  final pending = <DiagnosticsNode>[];
  ErrorSummary? errorSummary;
  for (final node in properties) {
    if (node is ErrorSummary) {
      errorSummary = node;
      break;
    }
  }
  var foundStackTrace = false;
  final result = <DiagnosticsNode>[];
  for (final node in properties) {
    if (!foundStackTrace && node is DiagnosticsStackTrace) {
      foundStackTrace = true;
    }
    if (_isDebugCreator(node)) {
      result.addAll(_parseDiagnosticsNode(node, errorSummary));
    } else {
      if (foundStackTrace) {
        pending.add(node);
      } else {
        result.add(node);
      }
    }
  }
  result.addAll(pending);
  return result;
}