saveBytes static method

Future<void> saveBytes({
  1. required Uint8List bytes,
  2. required String fileName,
})

Implementation

static Future<void> saveBytes({
  required Uint8List bytes,
  required String fileName,
}) async {
  final int dotIndex = fileName.lastIndexOf('.');
  final String nameWithoutExt =
  dotIndex != -1 ? fileName.substring(0, dotIndex) : fileName;

  final String ext =
  dotIndex != -1 ? fileName.substring(dotIndex + 1).toLowerCase() : '';

  final MimeType mimeType = _getMimeTypeFromExtension(ext);

  if (kIsWeb) {
    final blob = html.Blob([bytes]); // ✅ no copy
    final url = html.Url.createObjectUrlFromBlob(blob);

    final anchor = html.AnchorElement(href: url)
      ..setAttribute('download', fileName)
      ..click();

    html.Url.revokeObjectUrl(url);
  } else {
    final path = await FileSaver.instance.saveAs(
      name: nameWithoutExt,
      bytes: bytes,
      fileExtension: ext,
      mimeType: mimeType,
    );

    debugPrint("✅ File saved at: $path");
  }
}