safeMoveOrCopy function

void safeMoveOrCopy(
  1. File src,
  2. String newPath,
  3. String label, {
  4. bool move = true,
})

Moves or copies src to newPath, falling back to copy+delete when a cross-device rename fails.

Implementation

void safeMoveOrCopy(File src, String newPath, String label,
    {bool move = true}) {
  try {
    if (move) {
      print('  - Moving "$label"');
      src.renameSync(newPath);
    } else {
      print('  - Copying "$label"');
      src.copySync(newPath);
    }
  } catch (e) {
    print('  - Rename failed ($e), falling back to copy...');
    src.copySync(newPath);
    if (move) src.deleteSync();
  }
}