getMaxWidthStrings function
计算字符串的长度如字符串的长度大于等于最大可显示的宽度,截取字符串
Implementation
List<StringData> getMaxWidthStrings(
String text, TextStyle textStyle, double contentMaxWidth,
{bool reverse = true}) {
var strArrays = <StringData>[];
if (text.isEmpty) {
return strArrays;
}
var textPainter = TextPainter(
text: TextSpan(text: text, style: textStyle),
textAlign: TextAlign.center,
textDirection: TextDirection.ltr,
);
textPainter.layout(maxWidth: contentMaxWidth);
final computeLineMetrics = textPainter.computeLineMetrics();
TextPosition prePosition = const TextPosition(offset: 0);
for (var line in computeLineMetrics) {
var textPosition = textPainter
.getPositionForOffset(Offset(line.left + line.width, line.baseline));
var string = text.substring(prePosition.offset, textPosition.offset);
strArrays.add(StringData(string, line.width));
prePosition = textPosition;
}
if (reverse) {
return strArrays.reversed.toList();
} else {
return strArrays.toList();
}
}