第四节:Flutter 中文本Text与样式TextStyle


1. Text 文本

Text组件用于显示简单的文本样式,包换控制文本显示样式的一些属性

1.1 Text组件源码罗列的参数
const Text(
    this.data,  // 这是文本显示的内容,是必传参数
{               // {} 中罗列的是可选参数 
    Key key,
    this.style,
    this.strutStyle,
    this.textAlign,
    this.textDirection,
    this.locale,
    this.softWrap,
    this.overflow,
    this.textScaleFactor,
    this.maxLines,
    this.semanticsLabel,
    this.textWidthBasis,
    this.textHeightBehavior,
  })


1.2 必传参数

Text组件中,data参数是必选参数, 为Text文本组件将要显示的文本内容

Text(
    "你好,Flutter"
)

显示的内容:

Text组件文本_图1.png

这样内容给就渲染出来了


也可以将文本多次渲染

Text(
    "你好,Flutter"*3
)

显示结果:

多次渲染内容_图2.png

那么接下来就一些看看可选参数中一些比较常用的参数吧:


2. Text组件常用的参数

Text组件常用参数罗列

名称 功能
textAlign 文本对齐方式:<br />center: 居中<br />left: 左对齐<br />right: 右对齐<br />justify: 两端对齐
maxLines 文字显示最大行数
overflow 文字超出屏幕之后的处理方式:<br />clip: 裁剪<br />fade: 渐隐<br />ellipsis: 省略号
textScaleFactor 字体显示倍率
textDirection 文本方法<br />ltr : 从左至右<br />rtl: 从右至左
style 字体的样式设置,值为TextStyle


2.1 textAlign参数

textAlign参数说明:

  1. textAlign:文本的对齐方式;可以选择左对齐、右对齐还是居中。
  2. 对齐的参考系是Text widget本身。
  3. 如果文本内容长度和Text宽度一样,指定对齐方式将毫无意义

示例:

Text(
    "你好,Flutter"*6,                 // 文本内容
    textAlign: TextAlign.center       // 文本居中对齐
)

显示结果:

文本居中对齐_图3.png

此时文本内容就居中对齐了


注意:

  1. 如果是单行文字, 在设置文本对齐方式的时候可能没有效果,
  2. 在下这么理解的,Text组件有点像像HTML中的文本标签, 属于行内元素,本身具有包裹性,收缩性
  3. 因此默认情况下Text宽度是由内容撑开的, 因此单独定义对齐方式感觉不出来效果
  4. 所以我们在示例中,将文字内容增多,换行,这样Text宽度就会被第一行文字撑开,
  5. 此时设置对齐方式,第二行文本就会有效果


2.2 maxLines与overflow参数

maxLines参数用来指定文本显示行数, 默认所有的文本都会自动换行

overflow参数用来指定当文本内容超过了maxLines,超过的部分如何显示,默认是截取

示例:

默认文本显示

Text(
    "你好,Flutter"*12,                 // 文本内容
)

显示结果:

自动换行_图4.png


指定文本显示行数

Text(
    "你好,Flutter"*12,                 // 文本内容
    maxLines: 2,                      // 指定文本行数
)

显示结果:

限制文本行数_图5.png


指定文本超出显示方式

Text(
    "你好,Flutter"*12,                   // 文本内容
    maxLines: 2,                        // 指定文本行数
    overflow: TextOverflow.ellipsis,    // 文本超出显示样式, 这里设置为...
)

显示结果

文本隐藏方式_图6.png


2.3 textScaleFactor

textScaleFactor: 设置相较于当前本子大小的的缩放因子(倍数),默认为1

示例:

Text(
    "你好,Flutter",       // 文本内容
    textScaleFactor: 3   // 字体放大3倍
)

显示结果:

字体放大倍数_图7.png

说明:

相较于style属性设置文本样式时设置文字大小,textScaleFactor只是一种快捷方式而已


2.4 type 参数

type: 用于设置文本样式, type的值也是一个组件,是TextStyle类

接下来就好好看看TextStyle类


3. TextStyle 样式

TextStyle用于指定文本显示的样式如颜色、字体、粗细、背景等。

3.1 TextStyle样式源码中所有的参数
const TextStyle({   // 所有的参数都是可选参数
    this.inherit = true,
    this.color,
    this.backgroundColor,
    this.fontSize,
    this.fontWeight,
    this.fontStyle,
    this.letterSpacing,
    this.wordSpacing,
    this.textBaseline,
    this.height,
    this.locale,
    this.foreground,
    this.background,
    this.shadows,
    this.fontFeatures,
    this.decoration,
    this.decorationColor,
    this.decorationStyle,
    this.decorationThickness,
    this.debugLabel,
    String fontFamily,
    List<String> fontFamilyFallback,
    String package,
})

一样,我们只看一些比较常用的, 如常用的在使用到了在回头来研究


3.2 TextStyle 样式常用的参数
名称 功能
decoration 文字装饰线<br />none: 空<br />lineThrough: 删除线<br />overline: 上划线<br />underline: 下划线
decorationColor 文字装饰线的颜色
decorationStyle 文字装饰线的风格<br />([dashed,dotted]): 虚线<br />double: 双线<br />solid: 实线<br />wavy: 波浪线
wordSpacing 单词间隙(如果是负值,会让单词变得更紧凑)
letterSpacing 字母间隙(如果是负值,会让字母变得更紧凑)
fontStyle 文字样式:<br />italic: 斜体<br />normal: 正常
fontSize 字体大小
color 字体颜色
fontWeight 字体粗细:<br />bold: 粗体<br />normal: 正常
height 行高


3.3. 示例:

代码:

Text(
    "你好,Flutter",       // 文本内容
    style:TextStyle(
        fontSize: 30.0,       // 浮点型数字
        height: 1.2 ,         // 行高1.2倍
        fontFamily: "Courier" , // 字体类型
        fontWeight: FontWeight.bold,   // 文字粗体
        decoration: TextDecoration.underline,  // 文本修饰线
        decorationStyle: TextDecorationStyle.dashed, // 修饰线风格
        decorationColor: Colors.pink,    // 修饰线颜色
        letterSpacing: 10,             // 文字间距

    )
)

显示结果:

文本样式设置_图8.png


3.4 一些参数的注意项
  1. height: 用于指定行高,但它并不是一个具体行高的绝对值,而是一个文字大小的倍数
  2. fontFamily :不同平台默认支持的字体集不同,因此指定字体时一定要先测试不同的平台显示。
  3. fontSize:该属性和Text的textScaleFactor都用于控制字体大小。区别在于
    • fontSize可以精确指定字体大小,而textScaleFactor只能通过缩放比例来控制。
    • textScaleFactor主要是对Flutter应用字体进行全局调整,而fontSize通常用于单个文本,字体大小


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352