提交 fd5d790a authored 作者: 张国庆's avatar 张国庆

增加缓存方法,加载网络图不使用 任何装饰圆角
上级 0866e6be
......@@ -30,7 +30,7 @@ class _MyAppState extends State<MyApp> {
border: Border.all(color: Colors.grey, width: 0.5),
),
child: ImageWidget.loadNetImage(
"https://s2.loli.net/2022/08/16/8JNPIXnV4qF2ZhR.jpg1",
"https://s2.loli.net/2022/08/16/8JNPIXnV4qF2ZhR.jpg",
placeholder: ImageWidget.loadAssetImage("img")),
),
],
......
......@@ -23,9 +23,7 @@ class ImageWidget {
return OctoImage(
image: CachedNetworkImageProvider(url ?? ""),
imageBuilder: type == ImageTransformerType.rect
? MyOctoImageTransformer.radiusAvatar()
: MyOctoImageTransformer.circleAvatar(),
imageBuilder: MyOctoImageTransformer.getOctoImageBuilder(type),
errorBuilder: ImageWidget.placeholderBuilder(errorWidget: placeholder),
fit: fit,
width: width,
......@@ -33,7 +31,7 @@ class ImageWidget {
);
}
/// 加载网络图片widget
/// 加载本地图片widget
static Widget loadAssetImage(
String? image, {
double? width,
......@@ -58,6 +56,29 @@ class ImageWidget {
);
}
//缓存 本地图片
static void cacheAssetImage(
context,
String image, {
String format = 'png',
}) {
precacheImage(
AssetImage(ImageUtils.getImgPath(image, format: format)), context);
}
//缓存 网络图片
static void cacheNetImage(
context,
String url, {
String? domain,
}) {
var domainUrl = domain ?? ImageWidget.domain;
if (url.isNotEmpty && !url.startsWith("http")) {
url = domainUrl + url;
}
precacheImage(CachedNetworkImageProvider(url), context);
}
static OctoErrorBuilder placeholderBuilder({
Widget? errorWidget,
}) {
......@@ -97,6 +118,19 @@ class MyOctoImageTransformer {
),
);
}
// 根据type返回 OctoImageBuilder
static OctoImageBuilder getOctoImageBuilder(ImageTransformerType type) {
switch (type) {
case ImageTransformerType.rect:
return radiusAvatar();
case ImageTransformerType.circle:
return circleAvatar();
default:
return (context, child) => child;
}
}
}
enum ImageTransformerType {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论