safeMoveOrCopy function
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();
}
}