convertAllStrings method
Convert all non-localized strings to AppLocalizations calls
Implementation
Future<ConversionResult> convertAllStrings(
List<NonLocalizedString> nonLocalizedStrings) async {
if (verbose) {
print('🔄 Starting automatic code conversion...');
if (dryRun) {
print('🔍 DRY RUN MODE - No files will be modified');
}
}
final conversions = <CodeConversion>[];
final failedConversions = <String>[];
final filesModified = <String>{};
// Group strings by file for efficient processing
final stringsByFile = <String, List<NonLocalizedString>>{};
for (final string in nonLocalizedStrings) {
stringsByFile.putIfAbsent(string.filePath, () => []).add(string);
}
for (final entry in stringsByFile.entries) {
final filePath = entry.key;
final strings = entry.value;
try {
final result = await _convertFile(filePath, strings);
conversions.addAll(result.conversions);
if (result.conversions.isNotEmpty) {
filesModified.add(filePath);
}
} catch (e) {
failedConversions.add('$filePath: $e');
if (verbose) {
print('❌ Failed to convert $filePath: $e');
}
}
}
final result = ConversionResult(
conversions: conversions,
failedConversions: failedConversions,
filesModified: filesModified.toList(),
totalStringsProcessed: nonLocalizedStrings.length,
);
if (verbose) {
print('✅ Code conversion completed:');
print(' - Files modified: ${filesModified.length}');
print(' - Strings converted: ${conversions.length}');
print(' - Failed conversions: ${failedConversions.length}');
}
return result;
}