generateWrapper function
Generate nested TranslationProvider wrapper function Order: main_app (outermost) → dependencies → child (innermost)
Implementation
String generateWrapper(List<SlangPackageInfo> packages) {
if (packages.isEmpty) {
return '''
Widget pvtroWrapper({required Widget child}) {
return child;
}
''';
}
final buffer = StringBuffer();
buffer.writeln('Widget pvtroWrapper({required Widget child}) {');
// Build nested TranslationProviders
// First package (main) is outermost, last is innermost around child
for (var i = 0; i < packages.length; i++) {
final indent = ' ' * (i + 1);
if (i == 0) {
buffer.writeln(' return _\$$i.TranslationProvider(');
} else {
buffer.writeln('${indent}child: _\$$i.TranslationProvider(');
}
}
// The innermost child
final deepestIndent = ' ' * (packages.length + 1);
buffer.writeln('${deepestIndent}child: child,');
// Close all providers (reverse order)
for (var i = packages.length - 1; i >= 0; i--) {
final indent = ' ' * (i + 1);
buffer.write('$indent)');
if (i > 0) {
buffer.writeln(',');
} else {
buffer.writeln(';');
}
}
buffer.writeln('}');
return buffer.toString();
}