Image是一個用于展示圖片的組件。支持 JPEG、PNG、GIF、Animated GIF、WebP、Animated WebP、BMP 和 WBMP 等格式。
創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)海興,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
Image.asset - 用于從資源目錄的顯示圖片,需要在 pubspec.yaml 文件中聲明。
Image.network - 用于從網(wǎng)絡(luò)上顯示圖片。
Image.file - 用于從文件里顯示圖片。
Image.memory - 用于從內(nèi)存里(Uint8List)顯示圖片。
alignment → AlignmentGeometry - 圖像邊界內(nèi)對齊圖像。
centerSlice → Rect - 九片圖像的中心切片。
color → Color - 該顏色與每個圖像像素混合colorBlendMode。
colorBlendMode → BlendMode - 用于 color 與此圖像結(jié)合使用。
fit → BoxFit - 圖像在布局中分配的空間。
gaplessPlayback → bool - 當(dāng)圖像提供者發(fā)生變化時,是繼續(xù)顯示舊圖像(true)還是暫時不顯示(false)。
image → ImageProvider - 要顯示的圖像。
matchTextDirection → bool - 是否在圖像的方向上繪制圖像 TextDirection。
repeat → ImageRepeat - 未充分容器時,是否重復(fù)圖片。
height → double - 圖像的高度。
width → double - 圖像的寬度。
加載資源圖片需要將圖片資源放入工程中,例如:新建images文件夾,將圖片放在該文件夾下,圖片適配則是使用ios的方式1X,2X,3X:
然后在pubspec.yaml中配置assets:
加載資源/網(wǎng)絡(luò)/本地文件圖片/內(nèi)存圖片:
占位圖加載圖片:
圓形圖片:1.裁剪實現(xiàn) 2.CircleAvatar實現(xiàn) 3.Container邊框?qū)崿F(xiàn)
圓角圖片:1.裁剪實現(xiàn) 2.Container邊框?qū)崿F(xiàn)
BoxFit.contain 全圖居中顯示但不充滿,顯示原比例
BoxFit.cover 圖片可能拉伸,也可能裁剪,但是充滿容器
BoxFit.fill 全圖顯示且填充滿,圖片可能會拉伸
BoxFit.fitHeight 圖片可能拉伸,可能裁剪,高度充滿
BoxFit.fitWidth 圖片可能拉伸,可能裁剪,寬度充滿
BoxFit.scaleDown 效果和contain差不多, 但是只能縮小圖片,不能放大圖片
下一節(jié)學(xué)習(xí)基礎(chǔ)組件之Text
Image組件的構(gòu)造方法
在 Android 中,我們都知道,圖片的顯示方式有很多,資源圖片、網(wǎng)絡(luò)圖片、文件圖片等等,在 Flutter 中也有多種方式,用來加載不同形式的圖片:
Image:通過ImageProvider來加載圖片
Image.asset:用來加載本地資源圖片
Image.file:用來加載本地(File文件)圖片
Image.network:用來加載網(wǎng)絡(luò)圖片
Image.memory:用來加載Uint8List資源(byte數(shù)組)圖片
Image 的一個參數(shù)是 ImageProvider,基本上所有形式的圖片加載都是依賴它,這個類里面就是實現(xiàn)圖片加載的原理。用法如下:
加載一個本地資源圖片,和 Android 一樣,有多種分辨率的圖片可供選擇,但是沿襲的是 iOS 的圖片風(fēng)格,分為 1x,2x,3x,具體做法是在項目的根目錄下創(chuàng)建兩個文件夾,如下圖所示:
還要配置如下
在pubspec.yaml文件
加載一個本地 File 圖片,比如相冊中的圖片,用法如下
加載一個網(wǎng)絡(luò)圖片,用法如下:
有的時候我們需要像Android那樣使用一個占位圖或者圖片加載出錯時顯示某張?zhí)囟ǖ膱D片,這時候需要用到 FadeInImage 這個組件:
用來將一個 byte 數(shù)組加載成圖片,用法如下:
flutter開發(fā)中,圖片的引用是必不可少的,所以為了提高效率和精準(zhǔn)度,我們需要對不同分辨率的手機使用相對應(yīng)的切圖圖片,本章介紹如何進(jìn)行 圖片分辨率適配 和 圖片批量拓展處理 。
flutter中會首先根據(jù)系統(tǒng)的devicePixelRatio(每一個邏輯像素包含多少個原始像素,可以通過MediaQueryData.devicePixelRatio來得到)來找對應(yīng)倍數(shù)的文件夾下的圖片,如果沒有對應(yīng)倍數(shù),找最接近的。
所以在flutter項目中,我們需要構(gòu)建對應(yīng)的倍數(shù)像素文件夾
之后再pubspec.yaml中,配置assets文件后就可以使用了(如使用"assets/images/jay.png",會自動適配該像素下最接近的jay圖片)。
使用flutter-img-sync插件批量化處理,具體操作如下
目前還不能處理gif、webp等格式的圖片,而且如果和上邊介紹的不同像素比適配方案一起使用的話,由于進(jìn)行了精準(zhǔn)定位,所以指定圖片后就不能進(jìn)行像素適配,這是目前還存在的較大問題,所以目前兩者方案只能暫時取一使用。
1、flutter項目中分別創(chuàng)建assets、images文件夾,在images文件夾下創(chuàng)建 2.0x 和 3.0x文件夾,用來分別存放2倍圖3倍圖。
層級結(jié)構(gòu)如圖下圖:
2、在pubspec.yaml進(jìn)行配置 (注意flutter下 assets:與uses-material-design: 層級結(jié)構(gòu)要左對齊否則會報錯 點擊查看錯誤展示 )
3、cd 進(jìn)入 flutter 項目目錄下,終端執(zhí)行 flutter pub get 命令,使配置生效
4、圖片使用