copyDirectory static method

Future<void> copyDirectory(
  1. Directory source,
  2. Directory destination
)

Implementation

static Future<void> copyDirectory(
  Directory source,
  Directory destination,
) async {
  if (!await destination.exists()) {
    await destination.create(recursive: true);
  }

  await for (var entity in source.list(recursive: false)) {
    if (entity is Directory) {
      final newDir = Directory(
        p.join(destination.path, p.basename(entity.path)),
      );
      await copyDirectory(entity, newDir);
    } else if (entity is File) {
      final newFile = File(p.join(destination.path, p.basename(entity.path)));
      await newFile.parent.create(recursive: true);
      await entity.copy(newFile.path);
    }
  }
}