作者 | 弗拉德
來源 | 弗拉德(公眾號:fulade_me)
Image是一個常用的控件,它可以幫助我們顯示圖片,圖片的資源可以是來自網絡、本地或者是內存。在移動端的開發中會大量使用Image來展示一些圖文,了解和掌握Image控件是非常有必要的。
AssetImage 和 Image.asset
AssetImage
是Flutter提供的一個可以從本地讀取圖片資源的類,我們可以使用它來讀取圖片。同樣Flutter還提供了Image.asset
這個構造方法直接來幫助我們讀取圖片資源並返回一個Image對象。其實Image.asset
是對AssetImage
一層更高級的封裝。
注意:要讀取本地圖片我們首先需要在
pubspec.yaml
文件里配置本地圖片資源的路徑,我們這里在assets
這個字段下新增了- images/image_demo.jpg
這個文件。后續將會有一篇專門的博客來講解資源的管理。
1. AssetImage
Image(
image: AssetImage("images/image_demo.jpg"),
width: 80,
height: 80,
)
2. Image.asset
Image.asset(
"images/image_demo.jpg",
width: 80,
height: 80,
)
兩個方法都是傳入一個本地文件路徑就可以了。
NetworkImage 和 Image.network
NetworkImage
是一個可以從網絡下載圖片的類,它本身是異步的。Image.network
是對NetworkImage
的封裝,它需要傳入一個URL地址就可以返回一個Image對象。這兩個的設計跟AssetImage
和Image.asset
的設計基本一致。
3. NetworkImage
Image(
image: NetworkImage("http://www.fulade.me/img/avatar.jpg"),
width: 80,
height: 80,
)
4. Image.network
Image.network(
"http://www.fulade.me/img/avatar.jpg",
width: 80,
height: 80,
)
Alignment
alignment
是Image的一個很重要的參數,它可以幫助我們設置圖片的位置。有以下幾個枚舉值
參數 | 描述 |
---|---|
topCenter | 居中靠上 |
topRight | 右上角 |
centerLeft | 居中靠左 |
center | 居中 |
centerRight | 居中靠右 |
bottomLeft | 居右下角 |
bottomCenter | 居中靠下 |
bottomRight | 居右下角 |
BoxFit
fit
參數是很重要的布局參數,當我們的圖片內容跟Image設置的大小不完全吻合的時候,fit
的參數值BoxFit
可以幫助我們做最優的調整和顯示
5. BoxFit.contain
fit
的默認值是BoxFit.contain
。由下圖我們不難看出,BoxFit.contain
會等比例縮放,保持圖片的原始的比例並且顯示在Image內。
6. BoxFit.fill
由圖可見BoxFit.fill
會充滿整個容器,如果圖片大小與容器不完全吻合,可能會出現拉伸。
7. BoxFit.cover
BoxFit.cover
會保持圖片資源的大小,如果超過的部分會被裁掉不會顯示。
8. BoxFit.fitWidth
BoxFit.fitWidth
會使寬度充滿整個容器,高度會按比例縮放,圖片不會被拉伸,超出容器的部分會被剪裁。
9. BoxFit.fitHeight
BoxFit.fitHeight
跟BoxFit.fitWidth
相似,高度會充滿整個容器,寬度會按比例縮放,圖片不會被拉伸,超出容器的部分會被剪裁。
10. BoxFit.none
none表示沒有設置顯示策略,以原始大小居中來顯示。
11. BoxFit.scaleDown
當圖片資源大於容器的時候,效果相當於 BoxFit.none
,
當組件比圖片小時,效果相當於 BoxFit.contain
。
對於加載過的圖片Flutter是會幫助我們做內存緩存,最大緩存數量是1000,最大緩存內存空間是100M。
想體驗以上的示例的運行效果,可以到我的Github倉庫項目flutter_app
->lib
->routes
->image_page.dart
查看,並且可以下載下來運行並體驗。