一尘不染

Flutter:如何获取文本行数

flutter

如何获取文本行数在Flutter项目中,我们需要确定文本行数是否超过3,然后将显示提示消息。我们如何使用代码来实现它?


阅读 2166

收藏
2020-08-13

共1个答案

一尘不染

如果您只想检查文本中包含多少个换行符,则可以执行以下简单操作

final numLines = '\n'.allMatches(yourText).length + 1;

但是,我想您对视觉上实际显示的行数更感兴趣。在这里,事情变得有些复杂,因为您需要知道可用空间(BoxConstraints)才能计算文本需要多少行。为此,您可以使用LayoutBuilder延迟窗口小部件的构建,并使用a
TextPainter进行实际计算:

return LayoutBuilder(builder: (context, size) {
  final span = TextSpan(text: yourText, style: yourStyle);
  final tp = TextPainter(text: span, maxLines: 3);
  tp.layout(maxWidth: size.maxWidth);

  if (tp.didExceedMaxLines) {
    // The text has more than three lines.
    // TODO: display the prompt message
    return Container(color: Colors.red);
  } else {
    return Text(yourText, style: yourStyle);
  }
});

我从auto_size_textpub包中提取了一些代码,您可能对此也很感兴趣:它调整文本大小,使其适合给定的空间。

无论如何,在显示提示时要小心:您的小部件的build方法可能每秒被调用几次,导致同时显示多个提示。

2020-08-13