Flutter基礎Widgets-Text

個人博客

Text

構造函數(shù)

Text構造函數(shù)的源碼如下面代碼所示

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,
}) : assert(
    data != null,
    'A non-null String must be provided to a Text widget.',
    ),
    textSpan = null,
    super(key: key);

屬性

  • data

需要顯示的字符串

Text(
    'Hello World',
)

運行結果如下圖所示


flutter_widgets_text_1.png
  • style

文本樣式瞬矩,樣式屬性如下表所示

flutter_widgets_text_11.png
Text(
    'Hello World',
    style: TextStyle(
        color: Colors.green,
        fontSize: 16.0,
        fontWeight: FontWeight.bold,
        fontStyle: FontStyle.italic,
        letterSpacing: 2.0,
        wordSpacing: 1.5,
        textBaseline: TextBaseline.alphabetic,
        decoration: TextDecoration.lineThrough,
        decorationStyle: TextDecorationStyle.dashed,
        decorationColor: Colors.blue
    ),
)

運行結果如下圖所示


flutter_widgets_text_2.png
  • textAlign

文本對齊方式,參數(shù)如下面表格所示

flutter_widgets_text_12.png
Column(
    children: <Widget>[
        Text(
            text,
            textAlign: TextAlign.left,
            style: TextStyle(
              color: Colors.green,
            ),
        ),
        Text(
            text,
            textAlign: TextAlign.center,
            style: TextStyle(
              color: Colors.black,
            ),
        ),
        Text(
            text,
            textAlign: TextAlign.right,
            style: TextStyle(
              color: Colors.yellow,
            ),
        ),
        Text(
            text,
            textAlign: TextAlign.start,
            style: TextStyle(
              color: Colors.red,
            ),
        ),
        Text(
            text,
            textAlign: TextAlign.end,
            style: TextStyle(
              color: Colors.orange,
            ),
        ),
        Text(
            text,
            textAlign: TextAlign.justify,
            style: TextStyle(
              color: Colors.blue,
            ),
        ),
    ],
)

運行結果如下圖所示


flutter_widgets_text_3.png
  • textDirection

TextDirection.ltr盾碗,文本從左向右流動;
TextDirection.rtl耗美,文本從右向左流動航缀。
相對TextAlign中的start谬盐、end而言有用(當start使用了ltr相當于end使用了rtl,也相當于TextAlign使用了left)

Column(
    children: <Widget>[
        Text(
            text,
            textDirection: TextDirection.ltr,
            style: TextStyle(
                color: Colors.green,
            ),
        ),
        Text(
            text,
            textDirection: TextDirection.rtl,
            style: TextStyle(
                color: Colors.blue,
            ),
        ),
    ],
)

運行結果如下圖所示


flutter_widgets_text_4.png
  • locale

此屬性很少設置,用于選擇區(qū)域特定字形的語言環(huán)境

  • softWrap

是否自動換行砸烦,若為false幢痘,文字將不考慮容器大小,單行顯示购岗,超出屏幕部分將默認截斷處理

Column(
    children: <Widget>[
        Text(
            text,
            softWrap: false,
            style: TextStyle(
                color: Colors.green,
            ),
        ),
        Text(
            text,
            softWrap: true,
            style: TextStyle(
                color: Colors.blue,
            ),
        ),
    ],
)

運行結果如下圖所示


flutter_widgets_text_5.png
  • overflow

處理溢出文本烹困,參數(shù)如下面表格所示

flutter_widgets_text_13.png
Column(
    children: <Widget>[
        Text(
            text,
            overflow: TextOverflow.clip,
            maxLines: 3,
            style: TextStyle(
                color: Colors.green,
            ),
        ),
        Text(
            text,
            overflow: TextOverflow.fade,
            maxLines: 3,
            style: TextStyle(
                color: Colors.blue,
            ),
        ),
        Text(
            text,
            overflow: TextOverflow.ellipsis,
            maxLines: 3,
            style: TextStyle(
                color: Colors.yellow,
            ),
        ),
    ],
)

運行結果如下圖所示


flutter_widgets_text_6.png
  • textScaleFactor

字體顯示倍率

Column(
    children: <Widget>[
        Text(
            text,
            style: TextStyle(
                color: Colors.green,
            ),
        ),
        Text(
            text,
            textScaleFactor: 2,
            style: TextStyle(
                color: Colors.blue,
            ),
        ),
          ],
        )

運行結果如下圖所示


flutter_widgets_text_7.png
  • maxLines

最大行數(shù)

Column(
    children: <Widget>[
        Text(
            text,
            style: TextStyle(
                color: Colors.green,
            ),
        ),
        Text(
            text,
            maxLines: 3,
            style: TextStyle(
                color: Colors.blue,
            ),
        ),
    ],
)

運行結果如下圖所示


flutter_widgets_text_8.png

Text.rich

在上面的例子中乾吻,Text的所有文本內(nèi)容只能按同一種樣式進行展示髓梅,如果我們需要對一個Text內(nèi)容的不同部分按照不同的樣式顯示,那又該怎么處理绎签?此時需要用到Text.rich枯饿。

構造函數(shù)

const Text.rich(this.textSpan, {
    Key key,
    this.style,
    this.strutStyle,
    this.textAlign,
    this.textDirection,
    this.locale,
    this.softWrap,
    this.overflow,
    this.textScaleFactor,
    this.maxLines,
    this.semanticsLabel,
}) : assert(
        textSpan != null,
        'A non-null TextSpan must be provided to a Text.rich widget.',
    ),
    data = null,
    super(key: key);

屬性

Text.rich中除了textSpan屬性跟Text不一樣,其他都一樣诡必。textSpan屬性如下所示

TextSpan

TextSpan定義如下

const TextSpan({
    this.style,
    this.text,
    this.children,
    this.recognizer,
});

其中styletext屬性代表該文本的樣式和內(nèi)容奢方;children是一個TextSpan的數(shù)組,也就是說TextSpan可以包括其他TextSpan擒权;而recognizer用于對該文本片段上用于手勢進行識別處理阁谆。下面看一個例子

Text.rich(TextSpan(
    children: [
        TextSpan(
            text: "百度: "
        ),
        TextSpan(
            text: "https://www.baidu.com",
            style: TextStyle(
                color: Colors.blue
            ),
        ),
    ]
))

運行結果如下圖所示


flutter_widgets_text_9.png

DefaultTextStyle

在widget樹中碳抄,文本的樣式默認是可以被繼承的,父節(jié)點的文本樣式子節(jié)點默認會繼承场绿,如果子節(jié)點中重新設置了默認樣式的某些屬性剖效,那么則以子節(jié)點設置的為準。我們也可以通過設置inherit: false不繼承父節(jié)點的默認樣式焰盗。下面我們看一個例子

DefaultTextStyle(
    textAlign: TextAlign.left,
    style: TextStyle(
            fontSize: 20.0,
            color: Colors.green,
            fontWeight: FontWeight.bold,
            fontStyle: FontStyle.italic),
            child: Column(
                children: <Widget>[
                  Text(
                    text,
                  ),
                  Text(
                    text,
                    style: TextStyle(
                      color: Colors.yellow,
                    ),
                  ),
                  Text(
                    text,
                    style: TextStyle(
                      inherit: false,
                      color: Colors.blue,
                    ),
                  ),
                ],
        ))

運行結果如下圖所示


flutter_widgets_text_10.png

好了璧尸,Text相關的內(nèi)容大概就這么多。更詳細的請看官方文檔

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熬拒,一起剝皮案震驚了整個濱河市爷光,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澎粟,老刑警劉巖蛀序,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異活烙,居然都是意外死亡徐裸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門啸盏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來重贺,“玉大人,你說我怎么就攤上這事∑希” “怎么了次企?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長潜圃。 經(jīng)常有香客問我抒巢,道長,這世上最難降的妖魔是什么秉犹? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任蛉谜,我火速辦了婚禮,結果婚禮上崇堵,老公的妹妹穿的比我還像新娘型诚。我一直安慰自己,他們只是感情好鸳劳,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布狰贯。 她就那樣靜靜地躺著,像睡著了一般赏廓。 火紅的嫁衣襯著肌膚如雪涵紊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天幔摸,我揣著相機與錄音摸柄,去河邊找鬼。 笑死既忆,一個胖子當著我的面吹牛驱负,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播患雇,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼跃脊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了苛吱?” 一聲冷哼從身側響起酪术,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翠储,沒想到半個月后绘雁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡彰亥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年咧七,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片任斋。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡继阻,死狀恐怖耻涛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瘟檩,我是刑警寧澤抹缕,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站墨辛,受9級特大地震影響卓研,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜睹簇,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一奏赘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧太惠,春花似錦磨淌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至埃脏,卻和暖如春搪锣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背彩掐。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工构舟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人佩谷。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓旁壮,卻偏偏與公主長得像监嗜,于是被迫代替她去往敵國和親谐檀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345