compute method
Computes the changes for this producer using builder.
This method should not modify fixKind.
Implementation
@override
Future<void> compute(ChangeBuilder builder) async {
final widgetExpr = node.findComponentExpression;
if (widgetExpr == null) {
return;
}
final widgetType = widgetExpr.staticType;
if (widgetType == null || widgetType.isExactComponentTypePadding) {
return;
}
final widgetSrc = utils.getNodeText(widgetExpr);
final parentClassElement = await sessionHelper.getClass(
noctermUri,
'Padding',
);
if (parentClassElement == null) {
return;
}
await builder.addDartFileEdit(file, (builder) {
// var eol = builder.eol;
final keyword = widgetExpr.inConstantContext ? '' : ' const';
final codeStyleOptions = getCodeStyleOptions(unitResult.file);
final paddingStr = codeStyleOptions.preferIntLiterals ? '8' : '8.0';
builder.addReplacement(range.node(widgetExpr), (builder) {
builder.writeReference(parentClassElement);
builder.write('(');
builder.writeln();
final indentNew =
'${utils.getLinePrefix(widgetExpr.offset)}${utils.oneIndent}';
builder.write(indentNew);
builder.write('padding:$keyword EdgeInsets.all($paddingStr),');
builder.writeln();
builder.write(utils.getLinePrefix(widgetExpr.offset));
builder.write('child: ');
builder.write(widgetSrc);
builder.write(')');
});
});
}