hashFile method

Future<String> hashFile(
  1. File file
)

Implementation

Future<String> hashFile(File file) async {
  final digestSink = DigestSink();
  final byteSink = crypto.sha512.startChunkedConversion(digestSink);

  final raf = await file.open();
  const chunkSize = 1048576; // 1MB chunks

  try {
    while (true) {
      final bytes = await raf.read(chunkSize);
      if (bytes.isEmpty) break;
      byteSink.add(bytes);
    }

    byteSink.close();
    return HEX.encode(digestSink.value?.bytes ?? []).toLowerCase();
  } finally {
    await raf.close();
  }
}