Flutter(6):基礎(chǔ)組件之Image

Flutter教學(xué)目錄持續(xù)更新中

github源代碼持續(xù)更新中

1.Image介紹

Image是一個(gè)用于展示圖片的組件。支持 JPEG提揍、PNG、GIF、Animated GIF傀广、WebP栓袖、Animated WebP册养、BMP 和 WBMP 等格式。

2.Image 的靜態(tài)函數(shù)

Image.asset - 用于從資源目錄的顯示圖片,需要在 pubspec.yaml 文件中聲明咆爽。
Image.network - 用于從網(wǎng)絡(luò)上顯示圖片。
Image.file - 用于從文件里顯示圖片置森。
Image.memory - 用于從內(nèi)存里(Uint8List)顯示圖片斗埂。

3.Image 常用屬性

alignment → AlignmentGeometry - 圖像邊界內(nèi)對(duì)齊圖像。
centerSlice → Rect - 九片圖像的中心切片凫海。
color → Color - 該顏色與每個(gè)圖像像素混合colorBlendMode呛凶。
colorBlendMode → BlendMode - 用于 color 與此圖像結(jié)合使用。
fit → BoxFit - 圖像在布局中分配的空間行贪。
gaplessPlayback → bool - 當(dāng)圖像提供者發(fā)生變化時(shí)漾稀,是繼續(xù)顯示舊圖像(true)還是暫時(shí)不顯示(false)。
image → ImageProvider - 要顯示的圖像建瘫。
matchTextDirection → bool - 是否在圖像的方向上繪制圖像 TextDirection崭捍。
repeat → ImageRepeat - 未充分容器時(shí),是否重復(fù)圖片啰脚。
height → double - 圖像的高度殷蛇。
width → double - 圖像的寬度。

4.使用方法

加載資源圖片需要將圖片資源放入工程中橄浓,例如:新建images文件夾粒梦,將圖片放在該文件夾下,圖片適配則是使用ios的方式1X荸实,2X匀们,3X:


1600342190613.jpg

然后在pubspec.yaml中配置assets:


1600342274064.jpg

加載資源/網(wǎng)絡(luò)/本地文件圖片/內(nèi)存圖片:


1600342387006.jpg
Container(
            color: Colors.grey,
            margin: EdgeInsets.only(top: 10, bottom: 10),
            padding: EdgeInsets.only(top: 10, bottom: 10),
            child: Row(
              children: [
                Expanded(
                  child: Image(
                    image: AssetImage('images/scan.png'),
                  ),
                ),
                Expanded(
                  child: Image(image: NetworkImage(imageUrl)),
                ),
                Expanded(
                  child: Image(
                    image: FileImage(File('')),
                    //byte 數(shù)組加載成圖片
//                    image: MemoryImage(),
                  ),
                ),
              ],
            ),
          ),

占位圖加載圖片:


1600342397672.jpg
Container(
            color: Colors.grey,
            margin: EdgeInsets.only(top: 10, bottom: 10),
            padding: EdgeInsets.only(top: 10, bottom: 10),
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                Expanded(
                    child: FadeInImage.assetNetwork(
                  placeholder: 'images/scan.png',
                  image: 'qqqqqq',
                  width: 100,
                  height: 100,
                )),
                Expanded(
                    child: FadeInImage.assetNetwork(
                  placeholder: 'images/scan.png',
                  image: imageUrl,
                  width: 100,
                  height: 100,
                )),
                //也可以使用內(nèi)存圖片做占位圖
                // Expanded(
                //     child: FadeInImage.memoryNetwork(
                //       placeholder:Uint8List ,
                //       image: imageUrl,
                //       width: 100,
                //       height: 100,
                //     ))
              ],
            ),
          )

圓形圖片:1.裁剪實(shí)現(xiàn) 2.CircleAvatar實(shí)現(xiàn) 3.Container邊框?qū)崿F(xiàn)


1600342554979.jpg
 Container(
            color: Colors.grey,
            padding: EdgeInsets.all(10),
            margin: EdgeInsets.only(top: 10, bottom: 10),
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                ClipRRect(
                  child: Image.network(
                    imageUrl,
                    fit: BoxFit.cover,
                    width: 100,
                    height: 100,
                  ),
                  borderRadius: BorderRadius.circular(50),
                ),
                CircleAvatar(
                  backgroundColor: Colors.white,
                  backgroundImage: NetworkImage(imageUrl),
                  //半徑越大,圖片越大
                  radius: 50,
                ),
                Container(
                  width: 100,
                  height: 100,
                  decoration: BoxDecoration(
                      color: Colors.white,
                      image: DecorationImage(
                          image: NetworkImage(imageUrl), fit: BoxFit.cover),
                      shape: BoxShape.circle),
                ),
              ],
            ),
          ),

圓角圖片:1.裁剪實(shí)現(xiàn) 2.Container邊框?qū)崿F(xiàn)


1600342565262.jpg
Container(
            color: Colors.grey,
            padding: EdgeInsets.all(10),
            margin: EdgeInsets.only(top: 10, bottom: 10),
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                ClipRRect(
                  child: Image.network(
                    imageUrl,
                    width: 100,
                    height: 100,
                    fit: BoxFit.cover,
                  ),
                  borderRadius: BorderRadius.circular(10),
                ),
                Container(
                  margin: EdgeInsets.only(left: 10),
                  width: 100,
                  height: 100,
                  decoration: BoxDecoration(
                      image: DecorationImage(
                          image: NetworkImage(imageUrl), fit: BoxFit.cover),
                      shape: BoxShape.rectangle,
                      borderRadius: BorderRadius.circular(10)),
                ),
              ],
            ),
          ),

5.fit:BoxFit

BoxFit.contain 全圖居中顯示但不充滿(mǎn)准给,顯示原比例
BoxFit.cover 圖片可能拉伸昼蛀,也可能裁剪宴猾,但是充滿(mǎn)容器
BoxFit.fill 全圖顯示且填充滿(mǎn),圖片可能會(huì)拉伸
BoxFit.fitHeight 圖片可能拉伸叼旋,可能裁剪仇哆,高度充滿(mǎn)
BoxFit.fitWidth 圖片可能拉伸,可能裁剪夫植,寬度充滿(mǎn)
BoxFit.scaleDown 效果和contain差不多讹剔, 但是只能縮小圖片,不能放大圖片


1600342723196.jpg
Container(
            color: Colors.grey,
            margin: EdgeInsets.only(top: 10, bottom: 10),
            padding: EdgeInsets.all(10),
            child: Column(
              children: [
                Container(
                  width: double.infinity,
                  height: 100,
                  child: Image(
                    image: NetworkImage(imageUrl),
                    fit: BoxFit.cover,
                  ),
                ),
                Container(
                  width: double.infinity,
                  height: 100,
                  child: Image(
                    image: NetworkImage(imageUrl),
                    fit: BoxFit.fill,
                  ),
                ),
                Container(
                  width: double.infinity,
                  height: 100,
                  child: Image(
                    image: NetworkImage(imageUrl),
                    fit: BoxFit.contain,
                  ),
                ),
                Container(
                  width: double.infinity,
                  height: 100,
                  child: Image(
                    image: NetworkImage(imageUrl),
                    fit: BoxFit.scaleDown,
                  ),
                ),
                Container(
                  width: double.infinity,
                  height: 100,
                  child: Image(
                    image: NetworkImage(imageUrl),
                    fit: BoxFit.fitHeight,
                  ),
                ),
                Container(
                  width: double.infinity,
                  height: 100,
                  child: Image(
                    image: NetworkImage(imageUrl),
                    fit: BoxFit.fitWidth,
                  ),
                ),
              ],
            ),
          ),

下一節(jié)學(xué)習(xí)基礎(chǔ)組件之Text

Flutter(7):基礎(chǔ)組件之Text

Flutter教學(xué)目錄持續(xù)更新中

github源代碼持續(xù)更新中

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末详民,一起剝皮案震驚了整個(gè)濱河市延欠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沈跨,老刑警劉巖由捎,帶你破解...
    沈念sama閱讀 212,686評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異饿凛,居然都是意外死亡狞玛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)涧窒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)心肪,“玉大人,你說(shuō)我怎么就攤上這事纠吴∮舶埃” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,160評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵戴已,是天一觀的道長(zhǎng)固该。 經(jīng)常有香客問(wèn)我,道長(zhǎng)糖儡,這世上最難降的妖魔是什么蹬音? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,736評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮休玩,結(jié)果婚禮上著淆,老公的妹妹穿的比我還像新娘。我一直安慰自己拴疤,他們只是感情好永部,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著呐矾,像睡著了一般苔埋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜒犯,一...
    開(kāi)封第一講書(shū)人閱讀 50,043評(píng)論 1 291
  • 那天组橄,我揣著相機(jī)與錄音荞膘,去河邊找鬼。 笑死玉工,一個(gè)胖子當(dāng)著我的面吹牛羽资,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播遵班,決...
    沈念sama閱讀 39,129評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼屠升,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了狭郑?” 一聲冷哼從身側(cè)響起腹暖,我...
    開(kāi)封第一講書(shū)人閱讀 37,872評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翰萨,沒(méi)想到半個(gè)月后脏答,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,318評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亩鬼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評(píng)論 2 327
  • 正文 我和宋清朗相戀三年殖告,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辛孵。...
    茶點(diǎn)故事閱讀 38,777評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丛肮,死狀恐怖赡磅,靈堂內(nèi)的尸體忽然破棺而出魄缚,到底是詐尸還是另有隱情,我是刑警寧澤焚廊,帶...
    沈念sama閱讀 34,470評(píng)論 4 333
  • 正文 年R本政府宣布冶匹,位于F島的核電站,受9級(jí)特大地震影響咆瘟,放射性物質(zhì)發(fā)生泄漏嚼隘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評(píng)論 3 317
  • 文/蒙蒙 一袒餐、第九天 我趴在偏房一處隱蔽的房頂上張望飞蛹。 院中可真熱鬧,春花似錦灸眼、人聲如沸卧檐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,861評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)霉囚。三九已至,卻和暖如春匕积,著一層夾襖步出監(jiān)牢的瞬間盈罐,已是汗流浹背榜跌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,095評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盅粪,地道東北人钓葫。 一個(gè)月前我還...
    沈念sama閱讀 46,589評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像湾揽,于是被迫代替她去往敵國(guó)和親瓤逼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容