Text

默认显示

在我们进行日常开发工作中,Text可以说是我们使用最多的部件了,那么我们来研究一下Text的相关使用;
首先,我们来看一下一段文本在Text上的默认显示效果:

  1. Text('Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。');

其显示效果如下:
image.png

居中显示

  1. textAlign: TextAlign.center,

显示效果如下:
image.png

TextStyle

创建一个TextStyleTextstyle属性赋值,用来改变字体大小及粗细;

  1. final TextStyle _textStyle = const TextStyle(
  2. fontSize: 20.0,
  3. fontWeight: FontWeight.w800,
  4. );
  5. @override
  6. Widget build(BuildContext context) {
  7. return Text(
  8. 'Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。',
  9. textAlign: TextAlign.center,
  10. style: _textStyle,
  11. );
  12. }

显示效果如下:
image.png

maxLines

显示最大行数:

  1. return Text(
  2. 'Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。',
  3. textAlign: TextAlign.center,
  4. style: _textStyle,
  5. maxLines: 2,
  6. );

代码运行效果如下:
image.png

overflow

�多余行数我们以...来显示:
image.png
显示效果:
image.png

文本拼接

显示文字很容易,但是在开发过程中经常是需要拼接文本的,那么又该如何处理呢?

我们先定义几个文本字符串:

  1. final String _title = '《法外狂徒张三的自我修养》';
  2. final String _lector = '讲师:';
  3. final String _name = '罗翔';

那么,我们如何将这三个字符串进行拼接呢?在Flutter中可以使用$来进行操作:

  1. Text(
  2. '$_title -- $_lector$_name',
  3. textAlign: TextAlign.center,
  4. style: _textStyle,
  5. );

我们来看一下显示效果:
image.png

RichText

简单的Text显示文字很容易,但是这还不足以满足我们的开发需求,我们在开发过程中经常会有需要显示富文本的情况,那么又该如何处理呢?

这个时候就需要使用RichText部件了;再使用RichText时结合TextSpan一起使用:
image.png
最终显示效果如下:
image.png

Container

Container这个部件在我们开发过程中会经常用到;

我们先来给Container添加一个颜色:

  1. Container(
  2. color: Colors.orange,
  3. );

我们执行代码之后发现,这个Container是整个屏幕大小:
image.png
这是为什么呢?这是因为Container默认大小是由其父部件决定的,会铺满父部件;

我们在Container里边使用Row部件布局,再添加一个Container
image.png
运行发现,红色的Container是无法显示的,橙色的Container依然是全屏显示,那么我们给这个红色的Container添加一个子部件:
image.png
这个时候我们再次刷新界面发现效果如下:
image.png
添加了一个Icon图标之后,Container显示出来了,而且原来的橙色的Container高度也改变了;这是自适应弹性布局的渲染效果:父部件会跟随子部件的内容进行改变;

我们再给红色Container添加一个内边距:
image.png
这个时候我们再来看一下运行效果:
image.png
结果,红色Container区域扩大,同时橙色的Container也同步扩大;那么再增加一个外边距呢:
image.png
我们再次查看渲染效果:
image.png
红色Container大小不变,而橙色的Container区域再次扩大了;高度扩大了15*2

那么,如果红色区域的Container高度设置过小或者过大会出现什么情况呢?

我们先给Icon高度设置为30,那么按照目前高度的计算,红色区域Container高度为:

20 + 30 + 20 = 70

接下来,我们给红色Container高度设置为200;代码如下:
image.png
运行结果;
image.png

然后,我们再将高度设置为50
image.png
运行结果;
image.png
结果显示,高度改变之后,Container的高度显示正确,但是内部的小部件因为布局无法满足的问题,显示将会出现问题;

同样的,我们去掉红色Container的高度,然后改变橙色Container的高度来看一下结果;按照当前高度的计算:

30 + 20 2+ 15 2 = 100

橙色Container的高度是100,那么如果给Container的高度设置为小于100会是什么样子呢?
image.png
运行结果如下:
image.png
内部部件显示也会出现问题,所以我们在进行布局的时候,关于布局的计算一定要细心;