
上QQ阅读APP看书,第一时间看更新
2.8 图片Image组件
在应用开发中,图片资源一般来源于网络、应用程序内asset资源目录、手机磁盘上存储的图片、SDK提供的Icon以及相册等。
在Flutter中用来加载图片的组件有AssetImage、DecorationImage、ExactAssetImage、FadeInImage、FileImage、NetworkImage、RawImage、MemoryImage、Image等。
2.8.1 加载网络图片
通过Image.network来加载网络图片,只需要传入对应的网络图片链接就可以,基本使用代码如下。


也可以通过NetworkImage来配合Image加载网络图片,代码如下。

2.8.2 加载本地图片
在移动开发中常用到一些小图片,这些小的图片一般会放在软件项目中,一起打到软件包中,以达到快速加载的目的,如Android中的图片存放文件夹mipmap或者是drawble文件夹,iOS中的Assets目录。
一般沿用Android与iOS的开发习惯,在Flutter的根目录下创建的资源目录还起名为assets,因为这里的资源可能包含图片、字体、音频等文件,所以在assets中再创建对应的目录images、fonts、voice等,如图2-28所示的目录结构中,images用来保存图片信息,对应的有1倍图、2倍图、3倍图目录空间。

图2-28 Flutter中的资源目录空间说明图
在Flutter中,通过Image.asset来加载资源目录下的图片,它的基本使用代码如下。


Flutter会根据当前设备的分辨率加载对应的图片,但是需要按照特定的目录结构来放置图片,目录结构如下。

需要注意的是,如果期望自动分辨加载,这三种图片都需要配置才可生效,否则只能按指定目录空间来加载使用。