flutter学习-day23-使用extended_image处理图片的加载和操作

文章目录

  • [1. 介绍](#1. 介绍)
  • [2. 属性介绍](#2. 属性介绍)
  • [3. 使用](#3. 使用)

1. 介绍

在 Flutter 的开发过程中,经常会遇到图片的显示和加载处理,通常显示一个图片,都有很多细节需要处理,比如图片的加载、缓存、错误处理、图片的压缩、图片的格式转换等,如果每个地方都手动处理,就太麻烦了,这时候就可以使用糖果大佬的插件 extended_image,它是官方 Image 的扩展三方库,不但支持图片加载以及失败显示,缓存网络图片,缩放拖拽图片,图片浏览等,还支持滑动退出页面,编辑图片(裁剪旋转翻转),保存,绘制自定义效果等功能。

效果图:

2. 属性介绍

属性 描述 值
url 网络请求地址 required
key 唯一标识符 -
semanticLabel 语义标签 -
excludeFromSemantics 是否排除语义 false
width 宽度 -
height 高度 -
color 颜色 -
opacity 透明度动画 -
colorBlendMode 颜色混合模式 -
fit 图片适应方式 -
alignment 对齐方式 Alignment.center
repeat 图片重复方式 ImageRepeat.noRepeat
centerSlice 九宫格切片区域 -
matchTextDirection 是否匹配文本方向 false
gaplessPlayback 是否无缝播放 false
filterQuality 滤镜质量 FilterQuality.low
loadStateChanged 图片加载状态回调 Function
shape 盒子形状 -
border 盒子边框 -
borderRadius 圆角半径 -
clipBehavior 裁剪行为 Clip.antiAlias
enableLoadState 是否启用加载状态 true
beforePaintImage 图片绘制前回调 -
afterPaintImage 图片绘制后回调 -
mode 扩展图片模式(默认/手势/编辑) ExtendedImageMode.none
enableMemoryCache 是否启用内存缓存 true
clearMemoryCacheIfFailed 加载失败时是否清除内存缓存 true
onDoubleTap 双击事件回调 -
initGestureConfigHandler 初始化手势配置回调 -
enableSlideOutPage 是否启用滑动退出页面 false
constraints 约束条件 -
cancelToken 用于取消请求的 Token CancellationToken()
retries 请求尝试次数 3
timeLimit 请求超时时间 -
headers 请求头 -
cache 是否缓存 true
scale 图片缩放比例 1.0
timeRetry 请求重试间隔 milliseconds: 100
extendedImageEditorKey 扩展图片编辑器键 -
initEditorConfigHandler 初始化编辑器配置回调 -
heroBuilderForSlidingPage 滑动退出页面时的英雄构建器 -
clearMemoryCacheWhenDispose 销毁时是否清除内存缓存 false
handleLoadingProgress 是否处理加载进度 false
extendedImageGestureKey 扩展图片手势键 -
cacheWidth 缓存宽度 -
cacheHeight 缓存高度 -
isAntiAlias 是否开启抗锯齿 false
cacheKey 缓存键 -
printError 是否打印错误信息 true
compressionRatio 压缩比例 -
maxBytes 最大字节数 -
cacheRawData 是否缓存原始数据 false
imageCacheName 图片缓存名称 -
cacheMaxAge 缓存最大寿命 -
layoutInsets 布局插入区域 EdgeInsets.zero

3. 使用

更详细的使用方式,请参考extended_image 文档,本例子只针对图片的加载、成功、失败的处理以及放大查看。

dart 复制代码
ExtendedImage.network(
  imagePath,
  width: double.infinity,
  fit: BoxFit.fitHeight,
  cache: true,
  mode: ExtendedImageMode.gesture,
  initGestureConfigHandler: (state) {
    return GestureConfig(
      // 缩放最小值
      minScale: 0.8,
      // 缩放动画最小值 当缩放结束时回到 minScale 值
      animationMinScale: 0.8,
      // 缩放最大值
      maxScale: 2.0,
      // 缩放动画最大值 当缩放结束时回到 maxScale 值
      animationMaxScale: 3.5,
      // 缩放拖拽速度
      speed: 1.0,
      // 拖拽惯性速度
      inertialSpeed: 100.0,
      initialScale: 1.0,
      // 是否使用 ExtendedImageGesturePageView 展示图片
      inPageView: false,
      // 当图片的初始化缩放大于 1.0 的时候,根据相对位置初始化图片
      initialAlignment: InitialAlignment.center
    );
  },
  /// 加载状态回调
  loadStateChanged: (ExtendedImageState state) {
    switch (state.extendedImageLoadState) {
      /// 加载中
      case LoadState.loading:
        // 自己写的加载中的Loading组件
        return LoadWait();

      /// 加载成功
      case LoadState.completed:
        return state.completedWidget;

      /// 加载失败
      case LoadState.failed:
        // 自己写的加载失败的组件 并且把重试的回调传递过去
        return LoadFailed(callback: state.reLoadImage);
    }
  }
)

本次分享就到这儿啦,我是鹏多多,如果您看了觉得有帮助,欢迎评论,关注,点赞,转发,我们下次见~

往期文章

个人主页

相关推荐
71-34 小时前
MySQL密码重置
数据库·笔记·学习·mysql
我命由我123454 小时前
Photoshop - Photoshop 快速共享作品
学习·ui·职场和发展·求职招聘·职场发展·学习方法·photoshop
我命由我123454 小时前
自动化 / 智能装配的对象、内容、层级
运维·学习·职场和发展·自动化·求职招聘·职场发展·学习方法
AI职业加油站4 小时前
大模型开发工程师证书怎么考?零基础学习路径与价值拆解
大数据·人工智能·学习·职场和发展·数据分析
换元不配限4 小时前
Android 架构演进实战:MVC → MVP → MVVM → MVI
android·架构·mvc·mvvm·mvp·mvi
江苏世纪龙科技4 小时前
让汽车“透明”起来——汽车结构原理VR教学软件
学习
Answer1st4 小时前
【嵌入式学习】嵌入式原理知识-ADC(七)
学习
bllovepigpig5 小时前
操作系统个人学习笔记(四):K8s基础
笔记·学习·kubernetes
司南-70496 小时前
AI infra 学习笔记(三):预处理·第一步——QKV 投影到底算了多少
人工智能·笔记·学习
mmsx6 小时前
Android Dialog 插槽模式:用一套壳统一全应用的弹窗风格
android·java·dialog·开发语言