wrapText function

List<String> wrapText(
  1. String text,
  2. int width
)

Wraps text to the given width, splitting on grapheme boundaries.

Implementation

List<String> wrapText(String text, int width) {
  final lines = <String>[];
  var currentLine = StringBuffer();
  var currentWidth = 0;

  for (final char in text.characters) {
    final charWidth = stringWidth(char);
    if (currentWidth + charWidth <= width) {
      currentLine.write(char);
      currentWidth += charWidth;
    } else {
      if (currentLine.isNotEmpty) lines.add(currentLine.toString());
      currentLine = StringBuffer(char);
      currentWidth = charWidth;
    }
  }

  if (currentLine.isNotEmpty) lines.add(currentLine.toString());
  return lines;
}