encodeAsync static method

FutureOr<Uint8List?> encodeAsync(
  1. Uint8List bytes, {
  2. int quality = defaultQuality,
})

Same as encode, but encodes in the compressionIsolatePool (a background Isolate) if bytes is large for quality (see isolateMinLength).

Implementation

static FutureOr<Uint8List?> encodeAsync(
  Uint8List bytes, {
  int quality = defaultQuality,
}) {
  quality = quality.clamp(0, 11);
  if (bytes.length < isolateMinLength(quality)) {
    return encode(bytes, quality: quality);
  }

  final encoder = APIBrotli.encoder;

  return compressionIsolatePool
      .run(() => encoder(bytes, quality))
      .then<Uint8List?>(
        (encoded) => encoded,
        onError: (Object e, StackTrace s) {
          _logEncodeError(bytes.length, quality, e, s);
          return null;
        },
      );
}