export static method

Export chart data or pixels through a single request/result API.

Implementation

static Future<ChartExportResult> export(ChartExportRequest request) async {
  final stopwatch = Stopwatch()..start();
  final filename = request.resolvedFilename;
  if (request.cancellationToken?.isCancelled == true) {
    return _cancelledExportResult(
      request,
      filename,
    ).withDuration(stopwatch.elapsed);
  }
  final validationError = _validateRequestOptions(request);
  if (validationError != null) {
    return ChartExportResult.failure(
      format: request.format,
      filename: filename,
      error: validationError,
      duration: stopwatch.elapsed,
    );
  }
  try {
    final result = await _guardExport(
      () => _performExport(request, filename),
      request,
      filename,
    );
    return result.withDuration(stopwatch.elapsed);
  } catch (error) {
    return ChartExportResult.failure(
      format: request.format,
      filename: filename,
      error: error.toString(),
      duration: stopwatch.elapsed,
    );
  }
}