parseListFromString function

List<String> parseListFromString(
  1. String input, {
  2. String delimiter = ',',
})

Parse list from string (e.g. "a,b,c" or JSON array string). Roadmap #154. Audited: 2026-06-12 11:26 EDT

Implementation

List<String> parseListFromString(String input, {String delimiter = ','}) {
  final String s = input.trim();
  if (s.isEmpty) return <String>[];
  // Bracketed input is parsed as a JSON-style array first so quoted commas are
  // respected; a failed parse falls through to delimiter splitting rather than
  // throwing, so malformed brackets still yield a best-effort list.
  if (s.startsWith('[') && s.endsWith(']')) {
    try {
      final Object? decoded = _jsonDecode(s);
      if (decoded is List<dynamic>) {
        return decoded.map((dynamic e) => e?.toString() ?? '').toList();
      }
    } on Object catch (e) {
      dev.log(_kLogParseListJsonFailed, error: e);
    }
  }
  // Plain mode: split on the delimiter, trimming and dropping empty pieces.
  return s.split(delimiter).map((String x) => x.trim()).where((String x) => x.isNotEmpty).toList();
}