Flutter的Image 这个Widget提供了如下几种常用的方式加载不同的图片
Image.asset:用来加载本地资源图片(图片需要在pubsepc.yaml文件中配置)
Image.file:用来加载本地File文件图片
Image.network:顾名思义,用来加载网络图片
Image.memory:用来加载Uint8List资源图片
Image:通过ImageProvider来加载图片,或者用来自定义ImageProvider来定义自己的图片控件
通过本篇博文,你可以了解到Image的加载流程、图片加载失败的监听等功能
ImageProvider与Image控件的关系
通过研究Image控件其源码可知,Image是通过ImageProvider来实现图片的解析和展示的:
class Image extends StatefulWidget{
///加载图片是通过ImageProvider来完成的
ImageProvider image;
}
上面Image的每个形式都有一个ImageProvider对象与之对应,比如Image.file就对应有一个FileImage,这个FileImage就是ImageProvider的实现类。ImageProvider的子类如下图所示(图1):