injectContextParameter static method

String injectContextParameter(
  1. String content
)

Analyze and fix functions that return Widgets but lack BuildContext parameter

Implementation

static String injectContextParameter(String content) {
  final parseResult =
      parseString(content: content, throwIfDiagnostics: false);
  final unit = parseResult.unit;

  final visitor = _WidgetFunctionVisitor();
  unit.accept(visitor);

  if (visitor.functionsNeedingContext.isEmpty) {
    return content;
  }

  var modifiedContent = content;

  // Sort by offset descending to avoid position shifts
  final sorted = visitor.functionsNeedingContext.toList()
    ..sort((a, b) => b.offset.compareTo(a.offset));

  for (final func in sorted) {
    // Add BuildContext parameter to function
    final paramList = func.parameters.toSource();
    final newParamList = _addContextParam(paramList);

    modifiedContent = modifiedContent.replaceFirst(
      '${func.name}$paramList',
      '${func.name}$newParamList',
    );

    print('🔧 Added BuildContext parameter to function: ${func.name}');
  }

  return modifiedContent;
}