Skip to content

Upgrading csv 7 to 8

Breaking7.2.0 → 8.0.0Breaking5Fixed1

BreakingUpgrade verdict

4 breaking changes.

  • The main class has a new name, Csv. The old name still works for now but is deprecated.
  • Csv is no longer a standard Dart Codec. Call asCodec() to get one when a library requires it.
  • The decoder now works as a stream transformer and emits one row per event.
  • To combine the decoder with another codec, go through asCodec() first.
Top 3 of 4 that need code or config changes
Breaking4
Renames CsvCodec to Csv, keeping a deprecated CsvCodec typedef for migration.
CsvCodecCsv
Csv no longer extends dart:convert's Codec; use asCodec() when a Codec is needed, such as for fuse().
CsvCodecasCodec()fuse()
CsvDecoder is now a StreamTransformerBase<String, List<dynamic>> instead of a Converter, with each stream event being a single row.
CsvDecoderStreamTransformerBaseConverterCsvEncoder
Replaces csv.decoder.fuse(...) with csv.asCodec().decoder.fuse(...).
csv.decoder.fuse()csv.asCodec().decoder.fuse()

Generated by DepDelta from published Dart source. Not mixed with prose notes.

  • removed: class CsvCodec extends Codec<List<List<dynamic>>, String>
  • removed: ctor CsvCodec({ String fieldDelimiter = …, String lineDelimiter = …, String quoteCharacter = …, String? escapeCharacter, QuoteMode quoteMode = …, bool addBom = …, bool autoDetect = …, bool skipEmptyLines = …, bool parseHeaders = …, dynamic Function(dynamic field, int index, String? header)? encoderTransform, dynamic Function(dynamic field, int index, String? header)? decoderTransform, bool dynami…
  • removed: ctor CsvCodec.excel()
  • removed: get CsvCodec.decoder: CsvDecoder
  • removed: get CsvCodec.encoder: CsvEncoder
  • removed: method CsvCodec.decodeWithHeaders(String encoded): List<CsvRow>
  • removed: method CsvEncoder.startChunkedConversion( Sink<String> sink, ): ChunkedConversionSink<List<List<dynamic>>>
  • changed: class CsvDecoder extends Converter<String, List<List<dynamic>>> → class CsvDecoder extends StreamTransformerBase<String, List<dynamic>>
  • changed: class CsvEncoder extends Converter<List<List<dynamic>>, String> → class CsvEncoder extends StreamTransformerBase<List<dynamic>, String>
  • changed: method CsvDecoder.startChunkedConversion(Sink<List<List<dynamic>>> sink): StringConversionSink → method CsvDecoder.startChunkedConversion(Sink<List<dynamic>> sink): StringConversionSink
  • changed: method CsvEncoder.convert(List<List<dynamic>> input): String → method CsvEncoder.convert(List<List<dynamic>> rows): String
  • changed: variable csv: final CsvCodec → variable csv: final Csv
  • changed: variable excel: final CsvCodec → variable excel: final Csv
  • added: class Csv
  • added: ctor Csv({ String fieldDelimiter = …, String lineDelimiter = …, String quoteCharacter = …, String? escapeCharacter, QuoteMode quoteMode = …, bool addBom = …, bool autoDetect = …, bool skipEmptyLines = …, bool parseHeaders = …, dynamic Function(dynamic field, int index, String? header)? encoderTransform, dynamic Function(dynamic field, int index, String? header)? decoderTransform, bool dynamicTypi…
  • added: ctor Csv.excel()
  • added: get Csv.decoder: CsvDecoder
  • added: get Csv.encoder: CsvEncoder
  • added: method Csv.asCodec({int? maxRowsPerBatch}): Codec<List<List<dynamic>>, String>
  • added: method Csv.decode(String input): List<List<dynamic>>
  • added: method Csv.decodeWithHeaders(String encoded): List<CsvRow>
  • added: method Csv.encode(List<List<dynamic>> rows): String
  • added: method CsvDecoder.bind(Stream<String> stream): Stream<List<dynamic>>
  • added: method CsvEncoder.bind(Stream<List<dynamic>> stream): Stream<String>
  • added: typedef CsvCodec = Csv