joinWithPrefix method

List<String> joinWithPrefix(
  1. String prefix, {
  2. required int maxLength,
  3. Encoding encoding = const Utf8Codec(),
})

Implementation

List<String> joinWithPrefix(
  String prefix, {
  required int maxLength,
  Encoding encoding = const Utf8Codec(),
}) {
  final plen = encoding.encode(prefix).length;
  final ulen = maxLength - plen;

  final a = <String>[];
  var sb = StringBuffer(prefix);
  var next = false;
  var len = 0;
  for (final item in this) {
    len += item.length + (next ? 1 : 0);
    if (ulen < len) {
      a.add(sb.toString());
      sb = StringBuffer(prefix);
      len = item.length;
      next = false;
    }
    if (next) {
      sb.write(' ');
    } else {
      next = true;
    }
    sb.write(item);
  }
  if (0 < len) {
    a.add(sb.toString());
  }
  return a;
}