exportRows static method

Future<FdcExportResult> exportRows({
  1. required FdcExportFormat format,
  2. required List<FdcExportColumn> columns,
  3. required Iterable<Map<String, Object?>> rows,
  4. FdcExportOptions? options,
  5. FdcExportWriter? writer,
  6. String? suggestedFileName,
  7. FdcExportWriterOptions? writerOptions,
  8. FdcExportStyle exportStyle = const FdcExportStyle(),
})

Exports already resolved rows and columns using format.

Grid adapters and future data sources can use this when they need custom column ordering, visible-column export, computed values, or non-dataset row sources while still reusing registered format writers.

Implementation

static Future<FdcExportResult> exportRows({
  required FdcExportFormat format,
  required List<FdcExportColumn> columns,
  required Iterable<Map<String, Object?>> rows,
  FdcExportOptions? options,
  FdcExportWriter? writer,
  String? suggestedFileName,
  FdcExportWriterOptions? writerOptions,
  FdcExportStyle exportStyle = const FdcExportStyle(),
}) async {
  final resolvedOptions = options ?? FdcExportOptions();
  final resolvedWriter = writer ?? FdcExportRegistry.writerFor(format);
  if (resolvedWriter == null) {
    throw UnsupportedError(
      'No FDC export writer is registered for ${format.id}. '
      'Pass a custom FdcExportWriter for extension formats.',
    );
  }

  final context = FdcExportWriterContext(
    format: format,
    options: resolvedOptions,
    columns: List<FdcExportColumn>.unmodifiable(columns),
    rows: List<Map<String, Object?>>.unmodifiable(rows),
    suggestedFileName: suggestedFileName,
    writerOptions: writerOptions,
    exportStyle: exportStyle,
  );

  return FdcExportResult(
    format: format,
    payload: await resolvedWriter.write(context),
    mimeType: format.mimeType,
    fileExtension: format.fileExtension,
    suggestedFileName: suggestedFileName,
  );
}