exportAll static method

Future<ChartExportBatchResult> exportAll(
  1. Iterable<ChartExportRequest> requests, {
  2. ChartExportBatchOptions options = const ChartExportBatchOptions(),
})

Export several requests and return a single summary object.

Each request is isolated: one failed export does not prevent later exports from running, which is important for mixed data + image batches.

Implementation

static Future<ChartExportBatchResult> exportAll(
  Iterable<ChartExportRequest> requests, {
  ChartExportBatchOptions options = const ChartExportBatchOptions(),
}) async {
  final allRequests = List<ChartExportRequest>.unmodifiable(requests);
  final requestList = <ChartExportRequest>[];
  final skippedUnavailable = <ChartExportCapability>[];
  for (final request in allRequests) {
    final capability = capabilityForRequest(request);
    if (options.skipUnavailable && !capability.canExport) {
      skippedUnavailable.add(capability);
    } else {
      requestList.add(request);
    }
  }
  final results = <ChartExportResult>[];
  for (final request in requestList) {
    final result = await export(
      request.withBatchControls(
        timeout: options.timeout,
        cancellationToken: options.cancellationToken,
      ),
    );
    results.add(result);
    _emitBatchProgress(
      options,
      ChartExportBatchProgress(
        completed: results.length,
        total: requestList.length,
        result: result,
      ),
    );
    if (options.stopOnFirstFailure && !result.success) break;
  }
  return ChartExportBatchResult(
    results,
    skippedUnavailable: skippedUnavailable,
    requestedCount: allRequests.length,
  );
}