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 = web.Blob([bytes.toJS].toJS); // ✅ no copy
    final url = web.URL.createObjectURL(blob);

    final anchor = web.document.createElement('a') as web.HTMLAnchorElement
      ..href = url
      ..setAttribute('download', fileName)
      ..click();

    web.URL.revokeObjectURL(url);
  } else {
    final path = await FileSaver.instance.saveAs(
      name: nameWithoutExt,
      bytes: bytes,
      fileExtension: ext,
      mimeType: mimeType,
    );

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