Flutter 文本溢出
  4QHOBLSsnlZu 2023年11月02日 287 0

问题

Flutter 中,我们应该怎么使用 ​Text​ 挂件来处理文本溢出问题呢?

在这篇文章中,我们将使用不同的方法来解决 ​​Flutter​​ 中文本的溢出问题。

Row(
children: const [
Text(
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis temporibus alias eligendi quas ullam atque numquam repudiandae est minima doloribus!",
),
],
),

当文本占据的位置比 ​​Row​​ 挂件的可用位置多的时候,文本溢出就会发生。

Flutter 文本溢出_flutter

解决方案

1. 使用 Expanded 挂件包裹 ​Text​ 挂件

Row(
children: const [
Expanded(
child: Text(
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis temporibus alias eligendi quas ullam atque numquam repudiandae est minima doloribus!",
),
),
],
),

这会使得文本可多行展示:

Flutter 文本溢出_Flutter_02

2. 使用 Expanded 挂件包裹 ​Text​ 挂件,并使用 ​maxLine​

Row(
children: const [
Expanded(
child: Text(
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis temporibus alias eligendi quas ullam atque numquam repudiandae est minima doloribus!",
maxLines: 1,
),
),
],
),

使用 ​​maxLines: 1​​ 使得我们的文本当单行展示,而不是多行完全展示。

Flutter 文本溢出_Flutter_03

3. 使用 Expanded 挂件包裹 ​Text​ 挂件,并使用 ​Text​ 挂件的 ​ellipsis​ 属性

Row(
children: const [
Expanded(
child: Text(
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis temporibus alias eligendi quas ullam atque numquam repudiandae est minima doloribus!",
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
),
],
),

使用 overflow: TextOverflow.ellipsis,如果文本不在特定的最大宽度内,则超出的范围的字符串将会被替代,如下:

Flutter 文本溢出_flutter_04

4. 使用 SingleChildScrollView 挂件包裹 ​Text​ 挂件,并被放在 ​Expended​ 挂件中,然后设定其水平属性

Row(
children: const [
Expanded(
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Text(
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis temporibus alias eligendi quas ullam atque numquam repudiandae est minima doloribus!",
),
),
),
],
),

这会使得文本在一行滚动展示:

Flutter 文本溢出_前端_05

5. 使用 SingleChildScrollView 挂件包裹 ​Text​ 挂件,并被放在 ​Expended​ 挂件中,然后设定垂直滚动

Row(
children: [
Expanded(
child: Container(
height: 60,
child: const SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Text(
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis temporibus alias eligendi quas ullam atque numquam repudiandae est minima doloribus! Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis temporibus alias eligendi quas ullam atque numquam repudiandae est minima doloribus! Lorem ipsum dolor sit amet consectetur adipisicing elit. Perferendis temporibus alias eligendi quas ullam atque numquam repudiandae est minima doloribus!",
),
),
),
),
],
),

如果文本放在 ​​container​​中,并设定了高度,就像上面代码,设定了文本垂直滚动效果:

Flutter 文本溢出_前端_06

以上就是全部的内容,我希望这些能够解决你的问题。

本文是译文,采用意译。原文链接:​​medium.com/@fz3hra/flu…​​

推荐阅读

  • ​​五子棋 - JavaScript 实现 - 两人对战​​

Flutter 文本溢出_Flutter_07

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  b1UHV4WKBb2S   2023年11月13日   33   0   0 裁剪ideflutter
  b1UHV4WKBb2S   2023年11月13日   26   0   0 flutterDart
4QHOBLSsnlZu