injectContextParameter static method
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;
}