saveIncrementalTo method

Future<bool> saveIncrementalTo(
  1. String path
)

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;
  }
}