getDigest method

Future<String> getDigest(
  1. String type
)

Implementation

Future<String> getDigest(String type) async {
  final data = await _getBytes();

  if (data.buffer.lengthInBytes == 0) {
    throw 'data buffer has not data. Do not re-use FileDigest in web platform';
  }

  final digest = Completer<String>();
  final worker = html.Worker('./assets/packages/file_digest/assets/worker.js');

  worker.addEventListener('message', (event) {
    event = event as html.MessageEvent;

    if (event.data is String) {
      digest.complete(event.data);
      worker.terminate();
    }
  });

  worker.postMessage({'type': type, 'data': data}, [data.buffer]);

  return digest.future;
}