copyAssets static method
Recursively copies old assets folder into new project
Implementation
static void copyAssets(String oldAssetsPath, String newAssetsPath) {
final oldDir = Directory(oldAssetsPath);
if (!oldDir.existsSync()) {
throw Exception('Old assets folder not found at $oldAssetsPath');
}
final newDir = Directory(newAssetsPath);
if (!newDir.existsSync()) newDir.createSync(recursive: true);
int copiedFiles = 0;
void copyRecursive(Directory source, Directory destination) {
for (var entity in source.listSync(recursive: false)) {
final newPath = p.join(destination.path, p.basename(entity.path));
if (entity is File) {
final parentDir = Directory(p.dirname(newPath));
if (!parentDir.existsSync()) parentDir.createSync(recursive: true);
entity.copySync(newPath);
copiedFiles++;
} else if (entity is Directory) {
final newSubDir = Directory(newPath);
if (!newSubDir.existsSync()) newSubDir.createSync();
copyRecursive(entity, newSubDir);
}
}
}
copyRecursive(oldDir, newDir);
if (copiedFiles < 2) {
print('Assets copied successfully. $copiedFiles file copied.');
} else {
print('Assets copied successfully. $copiedFiles files copied.');
}
print("Don't forget to specify assets in pubspec.yaml");
}