filesZip static method
Bundle arbitrary export files into a ZIP file.
Implementation
static ChartExportFile filesZip(
Iterable<ChartExportFile> files, {
String filename = defaultExportFilename,
Map<String, Object?> metadata = const {},
}) {
final resolvedFiles = files.toList(growable: false);
final zipBytes = ChartZipStoreWriter.writeFiles(
resolvedFiles.map(
(file) => ChartZipStoreFile(name: file.filename, bytes: file.bytes),
),
);
final totalSourceSizeBytes = resolvedFiles.fold<int>(
0,
(total, file) => total + file.sizeBytes,
);
return ChartExportFile(
filename: ChartExportFilename.withExtension(filename, 'zip'),
mimeType: mimeType,
bytes: zipBytes,
metadata: {
...metadata,
'kind': 'chartExportArchive',
'schemaVersion': ChartExportManifest.schemaVersion,
'fileCount': resolvedFiles.length,
'totalSourceSizeBytes': totalSourceSizeBytes,
'archiveSizeBytes': zipBytes.length,
'files': [for (final file in resolvedFiles) file.toMetadataJson()],
},
);
}