《Flutter For Android學(xué)習(xí)日記》基礎(chǔ)控件-圖片及ICON

圖片

Flutter中,我們可以通過(guò)Image組件來(lái)加載并顯示圖片,Image的數(shù)據(jù)源可以是asset楣嘁、文件、內(nèi)存以及網(wǎng)絡(luò)。

ImageProvider

ImageProvider 是一個(gè)抽象類(lèi)逐虚,主要定義了圖片數(shù)據(jù)獲取的接口load()聋溜,從不同的數(shù)據(jù)源獲取圖片需要實(shí)現(xiàn)不同的ImageProvider ,如AssetImage是實(shí)現(xiàn)了從Asset中加載圖片的ImageProvider叭爱,而NetworkImage實(shí)現(xiàn)了從網(wǎng)絡(luò)加載圖片的ImageProvider撮躁。

Image

Image widget有一個(gè)必選的image參數(shù),它對(duì)應(yīng)一個(gè)ImageProvider买雾。下面我們分別演示一下如何從asset和網(wǎng)絡(luò)加載圖片把曼。

從asset中加載圖片

1.在工程根目錄下創(chuàng)建一個(gè)images目錄,并將圖片avatar.png拷貝到該目錄凝果。
2.在pubspec.yaml中的flutter部分添加如下內(nèi)容:

 assets:
    - images/avatar.png

注意: 由于 yaml 文件對(duì)縮進(jìn)嚴(yán)格祝迂,所以必須嚴(yán)格按照每一層兩個(gè)空格的方式進(jìn)行縮進(jìn),此處assets前面應(yīng)有兩個(gè)空格器净。
3.加載該圖片

Image(
  image: AssetImage("images/avatar.png"),
  width: 100.0
);

Image也提供了一個(gè)快捷的構(gòu)造函數(shù)Image.asset用于從asset中加載型雳、顯示圖片:

Image.asset("images/avatar.png",
  width: 100.0,
)
從網(wǎng)絡(luò)加載圖片
Image(
  image: NetworkImage(
      "https://avatars2.githubusercontent.com/u/20411648?s=460&v=4"),
  width: 100.0,
)

Image也提供了一個(gè)快捷的構(gòu)造函數(shù)Image.network用于從網(wǎng)絡(luò)加載、顯示圖片:

Image.network(
  "https://avatars2.githubusercontent.com/u/20411648?s=460&v=4",
  width: 100.0,
)

運(yùn)行上面兩個(gè)示例山害,圖片加載成功后如圖3-17所示:


3-17
參數(shù)

Image在顯示圖片時(shí)定義了一系列參數(shù)纠俭,通過(guò)這些參數(shù)我們可以控制圖片的顯示外觀、大小浪慌、混合效果等冤荆。我們看一下Image的主要參數(shù):

const Image({
  ...
  this.width, //圖片的寬
  this.height, //圖片高度
  this.color, //圖片的混合色值
  this.colorBlendMode, //混合模式
  this.fit,//縮放模式
  this.alignment = Alignment.center, //對(duì)齊方式
  this.repeat = ImageRepeat.noRepeat, //重復(fù)方式
  ...
})
  • widthheight:用于設(shè)置圖片的寬权纤、高钓简,當(dāng)不指定寬高時(shí),圖片會(huì)根據(jù)當(dāng)前父容器的限制汹想,盡可能的顯示其原始大小外邓,如果只設(shè)置widthheight的其中一個(gè)古掏,那么另一個(gè)屬性默認(rèn)會(huì)按比例縮放损话,但可以通過(guò)下面介紹的fit屬性來(lái)指定適應(yīng)規(guī)則。

  • fit:該屬性用于在圖片的顯示空間和圖片本身大小不同時(shí)指定圖片的適應(yīng)模式槽唾。適應(yīng)模式是在BoxFit中定義丧枪,它是一個(gè)枚舉類(lèi)型,有如下值:

    • fill:會(huì)拉伸填充滿(mǎn)顯示空間庞萍,圖片本身長(zhǎng)寬比會(huì)發(fā)生變化拧烦,圖片會(huì)變形。
    • cover:會(huì)按圖片的長(zhǎng)寬比放大后居中填滿(mǎn)顯示空間挂绰,圖片不會(huì)變形屎篱,超出顯示空間部分會(huì)被剪裁服赎。
    • contain:這是圖片的默認(rèn)適應(yīng)規(guī)則葵蒂,圖片會(huì)在保證圖片本身長(zhǎng)寬比不變的情況下縮放以適應(yīng)當(dāng)前顯示空間交播,圖片不會(huì)變形。
    • fitWidth:圖片的寬度會(huì)縮放到顯示空間的寬度践付,高度會(huì)按比例縮放秦士,然后居中顯示,圖片不會(huì)變形永高,超出顯示空間部分會(huì)被剪裁隧土。
    • fitHeight:圖片的高度會(huì)縮放到顯示空間的高度,寬度會(huì)按比例縮放命爬,然后居中顯示曹傀,圖片不會(huì)變形,超出顯示空間部分會(huì)被剪裁饲宛。
    • none:圖片沒(méi)有適應(yīng)策略皆愉,會(huì)在顯示空間內(nèi)顯示圖片,如果圖片比顯示空間大艇抠,則顯示空間只會(huì)顯示圖片中間部分幕庐。
      3-15
  • colorcolorBlendMode:在圖片繪制時(shí)可以對(duì)每一個(gè)像素進(jìn)行顏色混合處理,color指定混合色家淤,而colorBlendMode指定混合模式异剥,下面是一個(gè)簡(jiǎn)單的示例:

Image(
  image: AssetImage("images/avatar.png"),
  width: 100.0,
  color: Colors.blue,
  colorBlendMode: BlendMode.difference,
);

運(yùn)行效果如圖3-19所示(彩色):


3-19
  • repeat:當(dāng)圖片本身大小小于顯示空間時(shí),指定圖片的重復(fù)規(guī)則絮重。簡(jiǎn)單示例如下:
Image(
  image: AssetImage("images/avatar.png"),
  width: 100.0,
  height: 200.0,
  repeat: ImageRepeat.repeatY ,
)
運(yùn)行效果
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冤寿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子青伤,更是在濱河造成了極大的恐慌督怜,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潮模,死亡現(xiàn)場(chǎng)離奇詭異亮蛔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)擎厢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)究流,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人动遭,你說(shuō)我怎么就攤上這事芬探。” “怎么了厘惦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵偷仿,是天一觀的道長(zhǎng)哩簿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)酝静,這世上最難降的妖魔是什么节榜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮别智,結(jié)果婚禮上宗苍,老公的妹妹穿的比我還像新娘。我一直安慰自己薄榛,他們只是感情好讳窟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著敞恋,像睡著了一般丽啡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上硬猫,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天补箍,我揣著相機(jī)與錄音,去河邊找鬼浦徊。 笑死馏予,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盔性。 我是一名探鬼主播霞丧,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冕香!你這毒婦竟也來(lái)了蛹尝?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤悉尾,失蹤者是張志新(化名)和其女友劉穎突那,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體构眯,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡愕难,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惫霸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猫缭。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖壹店,靈堂內(nèi)的尸體忽然破棺而出猜丹,到底是詐尸還是另有隱情,我是刑警寧澤硅卢,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布射窒,位于F島的核電站藏杖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏脉顿。R本人自食惡果不足惜蝌麸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弊予。 院中可真熱鬧祥楣,春花似錦开财、人聲如沸汉柒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)碾褂。三九已至,卻和暖如春历葛,著一層夾襖步出監(jiān)牢的瞬間正塌,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工恤溶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乓诽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓咒程,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親稠集。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饥瓷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353