/// return ImageCacheExt in createImageCache(),
/// if you have extends with WidgetsFlutterBinding
class XXX extends WidgetsFlutterBinding {
@override
ImageCache createImageCache() {
return ImageCacheExt();
}
}
PowerImageLoader.getInstance().registerImageLoader(
new PowerImageNetworkLoader(this.getApplicationContext()), "network");
PowerImageLoader.getInstance().registerImageLoader(
new PowerImageNativeAssetLoader(this.getApplicationContext()), "nativeAsset");
PowerImageLoader.getInstance().registerImageLoader(
new PowerImageFlutterAssetLoader(this.getApplicationContext()), "asset");
PowerImageLoader.getInstance().registerImageLoader(
new PowerImageFileLoader(this.getApplicationContext()), "file");
PowerImage
一个充分利用原生图片库能力、高扩展性的flutter图片库。
English document
特点:
支持加载 ui.Image 能力。在基于外接纹理的方案中,使用方无法拿到真正的 ui.Image 去使用,这导致图片库在这种特殊的使用场景下无能为力。
支持图片预加载能力。正如原生precacheImage一样。这在某些对图片展示速度要求较高的场景下非常有用。
新增纹理缓存,与原生图片库缓存打通!统一图片缓存,避免原生图片混用带来的内存问题。
支持模拟器。在 flutter-1.23.0-18.1.pre之前的版本,模拟器无法展示 Texture Widget。
完善自定义图片类型通道。解决业务自定义图片获取诉求。
完善的异常捕获与收集。
支持动图。(来自淘特的 PR)
使用
安装
将下方配置加入到
pubspec.yaml文件中:或者直接引用 GitHub 源码:
初始化
Flutter
1. 用
ImageCacheExt替换ImageCache.or
2. 初始化 PowerImageLoader
初始化并设置全局的默认的渲染方式,renderingTypeTexture为texture方式,renderingTypeExternal为ffi方式
另外
PowerImageSetupOptions里面也有异常上报,以及异常上报采样率。iOS
PowerImage 提供了基础的图片类型,包括网络图(network)、文件(file)、native 资源(nativeAsset)、flutter 资源(asset),使用方需要自定义对应的加载器。
OC
Swift
loader 需要遵循 PowerImageLoaderProtocol 协议:
Network image loader example:
OC
Swift
native asset loader example:
OC
Swift
flutter asset loader example:
OC
Swift
file loader example:
OC
Swift
Android
PowerImage 提供了基础的图片类型,包括网络图(network)、文件(file)、native 资源(nativeAsset)、flutter 资源(asset),使用方需要自定义对应的加载器。
Java
Kotlin
loader 需要遵循 PowerImageLoaderProtocol 协议:
Network image loader example:
Java
Kotlin
native asset loader example:
Java
Kotlin
flutter asset loader example:
Java
file loader example:
Java
Kotlin
API
network image:
nativeAsset:
Flutter asset:
File:
自定义来源图片:
1.自定义 imageType,比如 “album”。
2.自定义 src(PowerImageRequestOptionsSrc),里面放需要传递给native的自定义参数。
3.Native侧自定义Loader,接收Flutter侧传递的参数,然后返回一个Bitmap或UIImage,并注册该Loader。
4.Flutter侧就可以展示自定义的图片了。
.options
Android
iOS
例子
Network
最佳实践
最佳实践
原理
https://mp.weixin.qq.com/s/TdTGK21S-Yd3aD-yZDoYyQ