wordBreak function

String wordBreak(
  1. String text, {
  2. required TextStyle textStyle,
  3. required double maxWidth,
  4. TextScaler textScaler = TextScaler.noScaling,
})

Word break

Implementation

String wordBreak(
  String text, {
  required TextStyle textStyle,
  required double maxWidth,
  TextScaler textScaler = TextScaler.noScaling,
}) {
  if (text.trim().isEmpty) return text;
  final double space = _getTextWidth(' ', textStyle, textScaler);
  final List<String> words = text.split(' ');
  final List<double> wordWidthList = words.map((w) {
    return _getTextWidth(w, textStyle, textScaler);
  }).toList();
  String line = "";
  List<String> lines = [];
  for (int i = 0; i < words.length; i++) {
    final lineWidth = _getTextWidth(line, textStyle, textScaler);
    final isNext = i + 1 < words.length;
    final nextLineWidth = lineWidth + wordWidthList[i] + (isNext ? space : 0);
    if (nextLineWidth >= maxWidth) {
      lines.add(line);
      line = "";
    }
    line += words[i] + (isNext ? " " : "");
  }
  lines.add(line);
  return lines.join("\n");
}