saveIncrementalTo method
Implementation
Future<bool> saveIncrementalTo(String path) async {
if (kIsWeb) return false;
try {
final Uint8List increment = await buildIncrement();
final File target = File(path);
final String? sourcePath = document.source.inner is UFileByteSource ? (document.source.inner as UFileByteSource).path : null;
if (sourcePath != null && sourcePath == path) {
final RandomAccessFile handle = await target.open(mode: FileMode.append);
await handle.writeFrom(increment);
await handle.close();
return true;
}
final IOSink sink = target.openWrite();
const int chunk = 1 << 20;
int offset = 0;
while (offset < document.source.length) {
final int take = offset + chunk > document.source.length ? document.source.length - offset : chunk;
sink.add(await document.source.read(offset, take));
offset += take;
}
sink.add(increment);
await sink.flush();
await sink.close();
return true;
} on Object {
return false;
}
}