基于Flutter中Image
类扩展的网络图片加载与本地图片加载,设计思路与灵感取于 Cached network image 和 Glide.
- 使用
instantiateImageCodec
方法中的targetWidth
跟targetHeight
参数实现对源图片按需裁剪,不占用多余内存资源 - 单纯扩展
Image
类的功能与不足,对项目代码没有侵入性 - 支持缓存自定义实现,目前默认缓存使用flutter_cache_manager
- 支持大部分图床按需裁剪图片的需求
你可以直接使用 Glide.network,与官方一致。
Glide.network(
url,
width: 100,
height: 200,
fit: BoxFit.fill,
)
你可以直接使用 Glide.file,与官方一致。
Glide.file(
file,
width: 100,
height: 200,
fit: BoxFit.fill,
)
例子
class DefaultImageCacheManager extends ImageCacheManager {
@override
Future<File> getSingleFile(String url, {Size size, double devicePixelRatio}) {
return DefaultCacheManager().getSingleFile(url);
}
}
//init
Glide.cacheManager = DefaultImageCacheManager();
这里以阿里云OSS为例子
Glide.pathBuilder = (url, size, devicePixelRatio) => size.height >
size.width
? '$url?x-oss-process=image/resize,h_${(size.height * devicePixelRatio).toInt()}'
: '$url?x-oss-process=image/resize,w_${(size.width * devicePixelRatio).toInt()}';
目前实现的功能较少,只满足目前项目开发,开源项目难免不足,希望有朋友能提出宝贵的意见
说实在的取这个名字有点大言不惭
大家见谅,取这个名字主要希望在Android
原生转Flutter
方向的同学能加入,提高这个库的质量