我有一个文本小部件,如果超过一定大小,它可能会被截断:
ConstrainedBox(
constraints: BoxConstraints(maxHeight: 50.0),
child: Text(
widget.review,
overflow: TextOverflow.ellipsis,
)
);
或最大行数:
RichText(
maxLines: 2,
overflow: TextOverflow.ellipsis,
text: TextSpan(
style: TextStyle(color: Colors.black),
text: widget.review,
));
我的目标是只有在发生溢出的情况下才能扩展文本。有没有合适的方法来检查文本是否溢出?
我所尝试的
我发现在RichText中,有一个RenderParagraph renderObject
,它有一个私有属性TextPainter _textPainter
,它有一个bool didExceedMaxLines
。
简而言之,我只需要访问richText.renderObject._textPainter.didExceedMaxLines
,但正如您所看到的,它是私有的,带有下划线。
4条答案
按热度按时间j8ag8udp1#
我找到了一个方法来做到这一点。完整的代码如下,但简而言之:
1.使用LayoutBuilder确定我们有多少空间。
1.使用TextPainter模拟空间内文本的呈现。
以下是完整的演示应用程序:
9o685dep2#
有一个更短的方法可以得到文本是否溢出的答案。
46scxncf3#
你可以在pub.dev上使用flutter插件
auto_size_text
。当文本溢出时,你可以设置一些小部件出现。eiee3dmh4#
我制作了自己的小部件,我跨项目使用它,它在构造函数中取
Text
小部件并读取它的属性。