4.1 概述
Text
是 Flutter 中用来显示文本的最基础组件之一。无论是简单的字符串显示,还是复杂的富文本展示,Text
都能高效地完成任务。通过 Text
组件的各种属性,我们可以控制文本的样式、对齐方式、行数限制等。
4.2 Text 的基本使用
Text
组件的基本用法非常简单,只需要传入一个字符串:
Text('Hello, Flutter!')
在此示例中,Text
组件会在屏幕上显示文本 "Hello, Flutter!"。
4.3 Text 的主要属性
Text
组件提供了多种属性来控制文本的显示样式和行为。
属性 | 类型 | 说明 | 默认值 |
---|---|---|---|
data | String | 要显示的文本内容。 | null |
style | TextStyle | 控制文本的样式,如颜色、字体大小、粗细、字体风格等。 | null |
textAlign | TextAlign | 控制文本的对齐方式,可以选择左对齐、右对齐、居中等。 | TextAlign.start |
textDirection | TextDirection | 控制文本的方向,支持从左到右(LTR)或从右到左(RTL)。 | TextDirection.ltr |
maxLines | int | 限制文本显示的最大行数,超过行数时会根据 overflow 属性进行处理。 | null (无限行数) |
overflow | TextOverflow | 控制文本溢出时的处理方式,如截断、显示省略号或渐隐。 | TextOverflow.clip |
softWrap | bool | 控制文本是否可以在宽度不足时自动换行。 | true |
textScaleFactor | double | 控制文本相对于默认字体大小的缩放比例。 | 1.0 |
locale | Locale | 控制文本的区域设置,影响字体选择和排版。 | null |
strutStyle | StrutStyle | 控制文本的布局方式,特别是行高、基线等排版细节。 | null |
semanticsLabel | String | 用于无障碍功能,定义屏幕阅读器读取的文本标签。 | null |
textWidthBasis | TextWidthBasis | 决定文本宽度是基于紧密的文字宽度还是包含字母间距的宽度。 | TextWidthBasis.parent |
height | double | 定义每行文本的高度倍数。 | null |
4.4 TextStyle 详解
TextStyle
用于控制 Text
的样式,常用的属性如下:
属性 | 类型 | 说明 | 默认值 |
---|---|---|---|
color | Color | 文本颜色,如 Colors.black 。 | null |
fontSize | double | 文本的字体大小,以逻辑像素为单位。 | null |
fontWeight | FontWeight | 字体粗细,如 FontWeight.bold 。 | null |
fontStyle | FontStyle | 字体风格,可以选择 FontStyle.normal 或 FontStyle.italic 。 | FontStyle.normal |
letterSpacing | double | 设置字母之间的间距。 | null |
wordSpacing | double | 设置单词之间的间距。 | null |
height | double | 设置文本行高,行高是基于字体大小的倍数。 | null |
decoration | TextDecoration | 设置文本的装饰,如下划线、删除线、上划线等。 | null |
decorationColor | Color | 设置装饰线的颜色。 | null |
decorationStyle | TextDecorationStyle | 设置装饰线的样式,如实线、虚线、点线等。 | TextDecorationStyle.solid |
backgroundColor | Color | 文本的背景颜色。 | null |
4.5 TextAlign 属性详解
TextAlign
控制文本的水平对齐方式,常用选项包括:
属性 | 说明 |
---|---|
TextAlign.left | 文本左对齐。 |
TextAlign.right | 文本右对齐。 |
TextAlign.center | 文本居中对齐。 |
TextAlign.justify | 文本两端对齐。 |
TextAlign.start | 文本根据语言环境从开始对齐(LTR 从左对齐,RTL 从右对齐)。 |
TextAlign.end | 文本根据语言环境从结尾对齐(LTR 从右对齐,RTL 从左对齐)。 |
示例:
Text(
'Center Align Text',
textAlign: TextAlign.center,
)
该示例会将文本居中对齐显示。
4.6 TextOverflow 属性详解
当文本内容超过了容器的宽度或最大行数时,TextOverflow
决定如何处理溢出的部分。
属性 | 说明 |
---|---|
TextOverflow.clip | 直接裁剪超出部分。 |
TextOverflow.ellipsis | 使用省略号替代溢出部分。 |
TextOverflow.fade | 使溢出的文本渐隐消失。 |
TextOverflow.visible | 溢出的文本将被显示,可能会溢出屏幕或容器。 |
示例:
Text(
'This is a very long text that will be truncated...',
overflow: TextOverflow.ellipsis,
maxLines: 1,
)
该示例会将文本截断并在末尾显示省略号。
4.7 TextScaleFactor 属性详解
textScaleFactor
属性用于控制文本的缩放比例。通过这个属性,文本可以按照系统设置或自定义的比例进行放大或缩小。
示例:
Text(
'Scaled Text',
textScaleFactor: 1.5, // 文本大小放大1.5倍
)
此示例中的文本会放大到原字体大小的 1.5 倍。
4.8 富文本(Rich Text)支持
Text
组件可以通过 RichText
实现富文本效果。RichText
使用 TextSpan
对不同部分的文本应用不同的样式。
示例:
RichText(
text: TextSpan(
text: 'Hello ',
style: TextStyle(color: Colors.black, fontSize: 24),
children: <TextSpan>[
TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),
TextSpan(text: ' world!'),
],
),
)
该示例中,文本 "Hello world!" 的 "bold" 部分被加粗,其他部分保持默认样式。
4.9 性能优化建议
由于 Text
组件的使用非常频繁,因此需要注意性能优化。常见的优化措施包括:
- 避免不必要的重建:在状态不变化的情况下,避免每次刷新时重新构建文本组件。
- 使用富文本的最低代价:如果只需要对文本应用简单的样式,尽量使用单一的
Text
组件,而不是使用RichText
。 - 分离样式与逻辑:将常用的文本样式抽取出来,避免重复定义,提升代码的可维护性。
4.10 小结
在本章中,我们详细介绍了 Text
组件的基本用法及其重要属性。通过掌握 Text
组件的各种配置选项,你可以在应用中实现灵活的文本显示效果。无论是简单的字符串展示,还是复杂的富文本布局,Text
组件都提供了强大的功能支持。
在接下来的章节中,我们将深入探讨 Flutter 中的图像处理——Image