toSentence method

String toSentence({
  1. int? maxToShow,
  2. String separator = ",",
  3. String lastSeparator = "&",
  4. String suffix = "others",
})

Converts the list into a human-readable sentence.

Supports truncation with a remaining count suffix.

Example:

['A', 'B', 'C', 'D'].toSentence(maxToShow: 2);
// "A, B & 2 others"

Implementation

String toSentence({
  int? maxToShow,
  String separator = ",",
  String lastSeparator = "&",
  String suffix = "others",
}) {
  maxToShow ??= length;

  if (isEmpty || maxToShow <= 0) return "";
  if (length == 1) return first.toString();

  final show = min(maxToShow, length);
  final remaining = length - show;

  if (remaining <= 0) {
    var out = "";
    for (var i = 0; i < show; i++) {
      out += this[i].toString();

      if (i < show - 2) {
        out += "$separator ";
      } else if (i == show - 2) {
        out += " $lastSeparator ";
      }
    }
    return out;
  }

  var out = "";
  for (var i = 0; i < show; i++) {
    out += this[i].toString();
    if (i <= show - 2) {
      out += "$separator ";
    }
  }

  if (out.isNotEmpty) {
    out += " $lastSeparator ";
  }

  out += "$remaining $suffix";
  return out;
}