toCsvFromMaps static method
Converts a list of Maps to a CSV / TSV / DSV formatted string with custom delimiter.
Implementation
static String toCsvFromMaps(
List<Map<String, dynamic>> maps, {
List<TCsvColumn>? columns,
List<String>? headers,
String delimiter = ',',
}) {
if (maps.isEmpty) return '';
final resolvedHeaders = headers ?? columns?.map((c) => c.header).toList() ?? maps.first.keys.toList();
final keys = columns?.map((c) => c.key).toList() ?? headers ?? maps.first.keys.toList();
final rows = maps.map((map) {
return keys.map((k) {
final val = map[k];
if (columns != null) {
final col = columns.firstWhere(
(c) => c.key == k,
orElse: () => TCsvColumn.text(key: k, header: k),
);
return col.formatValue(val);
}
return val?.toString() ?? '';
}).toList();
}).toList();
return toCsv(resolvedHeaders, rows, delimiter: delimiter);
}