parseCsvLine method

List<String> parseCsvLine(
  1. String line
)

Implementation

List<String> parseCsvLine(String line) {
  final List<String> result = [];
  final StringBuffer buffer = StringBuffer();
  bool insideQuotes = false;

  for (int i = 0; i < line.length; i++) {
    final char = line[i];

    if (char == ',' && !insideQuotes) {
      result.add(buffer.toString());
      buffer.clear();
    } else if (char == '"') {
      if (!insideQuotes) {
        insideQuotes = true;
      } else {
        if (i + 1 < line.length && line[i + 1] == '"') {
          // Escaped quote
          buffer.write('"');
          i++; // Skip the next quote
        } else {
          insideQuotes = false;
        }
      }
    } else {
      buffer.write(char);
    }
  }

  // Add the last field
  result.add(buffer.toString());

  return result;
}