第一個(gè)flutter頁(yè)面之基礎(chǔ)組件Text

作為開(kāi)發(fā)者我我們第一個(gè)頁(yè)面是什么呢扭弧?不出意外應(yīng)該是登錄頁(yè)面阎姥。那么我們從登錄頁(yè)面的搭建過(guò)程,來(lái)學(xué)些flutter吧鸽捻。下面開(kāi)啟我們的學(xué)習(xí)之旅呼巴。

一個(gè)登錄頁(yè)面需要哪一些控件呢?

  • 兩個(gè)輸入框(TextField)
  • 一個(gè)Button按鈕(FlatButton)
  • 或許還有一些文本Text
  • 一個(gè)圖片(Image)

1.Widget簡(jiǎn)介

1.1 概念

在Flutter中幾乎所有的對(duì)象都是一個(gè)Widget御蒲。與原生開(kāi)發(fā)中“控件”不同的是衣赶,F(xiàn)lutter中的Widget的概念更廣泛,它不僅可以表示UI元素厚满,也可以表示一些功能性的組件如:用于手勢(shì)檢測(cè)的 GestureDetector widget府瞄、用于APP主題數(shù)據(jù)傳遞的Theme等等,而原生開(kāi)發(fā)中的控件通常只是指UI元素碘箍。在后面的內(nèi)容中摘能,我們?cè)诿枋鯱I元素時(shí)可能會(huì)用到“控件”续崖、“組件”這樣的概念,讀者心里需要知道他們就是widget团搞,只是在不同場(chǎng)景的不同表述而已严望。由于Flutter主要就是用于構(gòu)建用戶(hù)界面的,所以逻恐,在大多數(shù)時(shí)候像吻,讀者可以認(rèn)為widget就是一個(gè)控件,不必糾結(jié)于概念复隆。

1.2 文本及樣式

1.2 Text

Text用于顯示簡(jiǎn)單樣式文本拨匆,它包含一些控制文本顯示樣式的一些屬性,一個(gè)簡(jiǎn)單的例子如下:

const Text(this.data, {
    Key key,
    this.style,
    this.textAlign,
    this.textDirection,
    this.locale,
    this.softWrap,
    this.overflow,
    this.textScaleFactor,
    this.maxLines,
    this.semanticsLabel,
  }) : assert(data != null), textSpan = null, super(key: key);

const Text.rich(this.textSpan, {
    Key key,
    this.style,
    this.textAlign,
    this.textDirection,
    this.locale,
    this.softWrap,
    this.overflow,
    this.textScaleFactor,
    this.maxLines,
    this.semanticsLabel,
  }): assert(textSpan != null), data = null, super(key: key);

const RichText({
    Key key,
    @required this.text,
    this.textAlign = TextAlign.start,
    this.textDirection,
    this.softWrap = true,
    this.overflow = TextOverflow.clip,
    this.textScaleFactor = 1.0,
    this.maxLines,
    this.locale,
  }) : assert(text != null) ,assert(textAlign != null), assert(softWrap != null), assert(overflow != null),
       assert(textScaleFactor != null), assert(maxLines == null || maxLines > 0), super(key: key);

1.2.1 String data

要顯示的字符串

1.2.2 TextStyle style

文本樣式挽拂,樣式屬性如表:

屬性 說(shuō)明
Color color 文本顏色惭每。如果指定了foreground,則此值必須為null亏栈。
TextDecoration decoration 繪制文本裝飾:下劃線(xiàn)(TextDecoration.underline)上劃線(xiàn)(TextDecoration.overline)刪除線(xiàn)(TextDecoration.lineThrough)無(wú)(TextDecoration.none)
Color decorationColor 繪制文本裝飾的顏色台腥。
TextDecorationStyle decorationStyle 繪制文本裝飾的樣式:畫(huà)一條虛線(xiàn) TextDecorationStyle.dashed畫(huà)一條虛線(xiàn) TextDecorationStyle.dotted畫(huà)兩條線(xiàn) TextDecorationStyle.double畫(huà)一條實(shí)線(xiàn) TextDecorationStyle.solid畫(huà)一條正弦線(xiàn)(波浪線(xiàn)) TextDecorationStyle.wavy
FontWeight fontWeight 繪制文本時(shí)使用的字體粗細(xì):FontWeight.bold 常用的字體重量比正常重。即w700FontWeight.normal 默認(rèn)字體粗細(xì)绒北。即w400FontWeight.w100 薄黎侈,最薄FontWeight.w200 特輕FontWeight.w300 輕FontWeight.w400 正常/普通/平原FontWeight.w500 較粗FontWeight.w600 半粗體FontWeight.w700 加粗FontWeight.w800 特粗FontWeight.w900 最粗
FontStyle fontStyle 字體變體:FontStyle.italic 使用斜體FontStyle.normal 使用直立
TextBaseline textBaseline 對(duì)齊文本的水平線(xiàn):TextBaseline.alphabetic:文本基線(xiàn)是標(biāo)準(zhǔn)的字母基線(xiàn)TextBaseline.ideographic:文字基線(xiàn)是表意字基線(xiàn);如果字符本身超出了alphabetic 基線(xiàn)闷游,那么ideograhpic基線(xiàn)位置在字符本身的底部峻汉。
String fontFamily 使用的字體名稱(chēng)(例如,Roboto)脐往。如果字體是在包中定義的休吠,那么它將以'packages / package_name /'為前綴(例如'packages / cool_fonts / Roboto')
double fontSize 字體大小(pt、sp)业簿,默認(rèn)為14個(gè)邏輯像素(14pt瘤礁、14sp)
double letterSpacing 水平字母之間的空間間隔(邏輯像素為單位)∠皆矗可以使用負(fù)值來(lái)讓字母更接近。
double wordSpacing 單詞之間添加的空間間隔(邏輯像素為單位)希太】巳模可以使用負(fù)值來(lái)使單詞更接近。
double height 文本行與行的高度誊辉,作為字體大小的倍數(shù)(取值1~2矾湃,如1.2)
Locale locale 此屬性很少設(shè)置,用于選擇區(qū)域特定字形的語(yǔ)言環(huán)境堕澄。
Paint background 文本背景色
Paint foreground 文本的前景色邀跃,不能與color共同設(shè)置(比文本顏色color區(qū)別在Paint功能多霉咨,后續(xù)會(huì)講解)
List<Shadow> shadows 詳解:Flutter Decoration背景設(shè)定(邊框、圓角拍屑、陰影途戒、形狀、漸變僵驰、背景圖像等)

style 參數(shù)可選喷斋。省略時(shí),文本將使用最接近的DefaultTextStyle的樣式蒜茴。如果給定樣式的TextStyle.inherit屬性為true(默認(rèn)值)星爪,則給定樣式將與最接近的DefaultTextStyle合并。例如粉私,這種合并行為很有用顽腾,可以在使用默認(rèn)字體系列和大小時(shí)使文本變?yōu)榇煮w。

1.2.3 TextAlign textAlign

文本應(yīng)如何水平對(duì)齊enum:

屬性 說(shuō)明
TextAlign.center 將文本對(duì)齊容器的中心诺核。
TextAlign.end 對(duì)齊容器后緣上的文本抄肖。
TextAlign.justify 拉伸以結(jié)束的文本行以填充容器的寬度。即使用了decorationStyle才起效
TextAlign.left 對(duì)齊容器左邊緣的文本猪瞬。
TextAlign.right 對(duì)齊容器右邊緣的文本憎瘸。
TextAlign.start 對(duì)齊容器前緣上的文本。

1.2.4 TextDirection textDirection

這個(gè)屬性估計(jì)是給外國(guó)人習(xí)慣使用陈瘦,

相對(duì)TextAlign中的start幌甘、end而言有用(當(dāng)start使用了ltr相當(dāng)于end使用了rtl,也相當(dāng)于TextAlign使用了left)

對(duì)于從左到右的文本(TextDirection.ltr)痊项,文本從左向右流動(dòng)锅风;

對(duì)于從右到左的文本(TextDirection.rtl),文本從右向左流動(dòng)鞍泉。

1.2.5 bool softWrap

某一行中文本過(guò)長(zhǎng)皱埠,是否需要換行。默認(rèn)為true咖驮,如果為false边器,則文本中的字形將被定位為好像存在無(wú)限的水平空間。

1.2.6 TextOverflow overflow

如何處理視覺(jué)溢出:

說(shuō)明
TextOverflow.clip 剪切溢出的文本以修復(fù)其容器托修。
TextOverflow.ellipsis 使用省略號(hào)表示文本已溢出忘巧。
TextOverflow.fade 將溢出的文本淡化為透明。

1.2.7 double textScaleFactor

每個(gè)邏輯像素的字體像素?cái)?shù)

作為textScaleFactor賦予構(gòu)造函數(shù)的值睦刃。如果為null砚嘴,將使用從環(huán)境MediaQuery獲取的MediaQueryData.textScaleFactor 即手機(jī)的像素密度(1.0、1.5、2.0际长、3.0)

1.2.8 int maxLines

文本要跨越的可選最大行數(shù),

為1耸采,則文本不會(huì)換行。否則工育,文本將被包裹在框的邊緣虾宇。

1.2.9 String semanticsLabel

圖像的語(yǔ)義描述,用于向Andoid上的TalkBack和iOS上的VoiceOver提供圖像描述

talkback是一款由谷歌官方開(kāi)發(fā)的系統(tǒng)軟件,它的定位是幫助盲人或者視力有障礙的用戶(hù)提供語(yǔ)言輔助

Voiceover功能是APPLE公司在2009年4月新推出的一種語(yǔ)音輔助程序

備注:參考:

https://docs.flutter.io/flutter/widgets/Text-class.html

https://docs.flutter.io/flutter/painting/TextStyle-class.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末翅娶,一起剝皮案震驚了整個(gè)濱河市文留,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竭沫,老刑警劉巖燥翅,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蜕提,居然都是意外死亡森书,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)谎势,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)凛膏,“玉大人,你說(shuō)我怎么就攤上這事脏榆〔粒” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵须喂,是天一觀的道長(zhǎng)吁断。 經(jīng)常有香客問(wèn)我,道長(zhǎng)坞生,這世上最難降的妖魔是什么仔役? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮是己,結(jié)果婚禮上又兵,老公的妹妹穿的比我還像新娘。我一直安慰自己卒废,他們只是感情好沛厨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著摔认,像睡著了一般逆皮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上级野,一...
    開(kāi)封第一講書(shū)人閱讀 50,021評(píng)論 1 291
  • 那天页屠,我揣著相機(jī)與錄音,去河邊找鬼蓖柔。 笑死辰企,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的况鸣。 我是一名探鬼主播牢贸,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼镐捧!你這毒婦竟也來(lái)了潜索?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤懂酱,失蹤者是張志新(化名)和其女友劉穎竹习,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體列牺,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡整陌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞎领。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泌辫。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖九默,靈堂內(nèi)的尸體忽然破棺而出震放,到底是詐尸還是另有隱情,我是刑警寧澤驼修,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布殿遂,位于F島的核電站,受9級(jí)特大地震影響邪锌,放射性物質(zhì)發(fā)生泄漏勉躺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一觅丰、第九天 我趴在偏房一處隱蔽的房頂上張望饵溅。 院中可真熱鬧,春花似錦妇萄、人聲如沸蜕企。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)轻掩。三九已至,卻和暖如春懦底,著一層夾襖步出監(jiān)牢的瞬間唇牧,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丐重,地道東北人腔召。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扮惦,于是被迫代替她去往敵國(guó)和親臀蛛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350