wrapText function
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;
}