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

文章目录

  • 1. 介绍
  • 2. 属性介绍
  • 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用于取消请求的 TokenCancellationToken()
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 文档,本例子只针对图片的加载、成功、失败的处理以及放大查看。

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);}}
)

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

往期文章

  • flutter学习-day1-环境搭建和启动第一个项目
  • flutter学习-day12-可滚动组件和监听
  • Vue2全家桶+Element搭建的PC端在线音乐网站
  • vue3+element-plus配置cdn
  • 助你上手Vue3全家桶之Vue3教程
  • 助你上手Vue3全家桶之VueX4教程
  • 助你上手Vue3全家桶之Vue-Router4教程
  • 超详细!Vue的九种通信方式
  • 超详细!Vuex手把手教程
  • 使用nvm管理node.js版本以及更换npm淘宝镜像源
  • vue中利用.env文件存储全局环境变量,以及配置vue启动和打包命令
  • 超详细!Vue-Router手把手教程

个人主页

  • CSDN
  • GitHub
  • 简书
  • 博客园
  • 掘金

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WinForm开发 - C# RadioButton(单选框) 设置默认选中或取消默认选中

WinForm开发中RadioButton组件使用过程中的小技巧。 1、属性界面操作 如果有多个组件,希望不显示默认选中单选框只需要将其Checked属性全部设置为False即可, 如果希望默认多个组件中显示默认选中,将其Checked属性设置为True。 2、代码实…

爱吃饼干的小白鼠2023年终总结

目录 前言 学习生活经历 回顾2023 参加活动 回顾点点滴滴 展望2024 2024年新的起点和目标 前言 大家好,我是爱吃饼干的小白鼠。今天刚好是2024年1月1日,时间飞逝,2023年过的飞快,我已经入驻CSDN有一年了,这一年…

Rust学习笔记005:结构体 struct

在 Rust 中,struct 是一种用于创建自定义数据类型的关键字,它允许你定义和组织数据的结构。struct 可以包含多个不同类型的字段(fields),每个字段都有一个名称和一个类型。 定义结构体 下面是一个简单的例子&#xff…

MySQL8.0 ROW_NUMBER 调用案例

ROW_NUMBER()是一个窗口函数或分析函数,它为从1开始应用的每一行分配一个序号。 创建表和生成所需要的数据 CREATE TABLE chapter11 ( shopname VARCHAR(255) NULL, sales VARCHAR(255) NULL, sale_date DATE NULL ); INSERT INTO chapter11 (shopname, sales, sal…

大数据背景下基于联邦学习的小微企业信用风险评估研究

摘要: 小微企业信用风险评估难是制约其融资和发展的一个主要障碍。基于大数据的小微企业信用风险评估依然面临着单机构数据片面、跨机构数据共享难、模型不稳定等诸多挑战。针对相关问题和挑战,本项目拟在多主体所有权数据隐私保护与安全共享的背景下&am…

构建基础wlan网络 hcia无线

实验 旁挂组网 二层网络 ac为 dhcp的服务器给ap地址 s1给sta的ip地址 DHCP 业务为直接转发 实验步骤 第一步 poe 开启 poe en 开启 第二步 有线连接 vlan的配置 s1 vlan batch 100 101 连接的端口 port link-type trunk port trunk allow-pass …

NodeJs - Chrome内存分析工具使用

NodeJs - Chrome内存分析工具使用 一. 前期准备二. Chrome 内存分析工具使用2.1 查看快照2.2 使用案例 一. 前期准备 我们下载好相关依赖: npm i v8-profiler-next测试代码: const v8Profiler require(v8-profiler-next) const fs require(fs)funct…

听GPT 讲Rust源代码--library/alloc(2)

File: rust/library/alloc/src/vec/mod.rs 在Rust源代码中,rust/library/alloc/src/vec/mod.rs这个文件是Rust标准库中的Vec类型的实现文件。Vec是一个动态大小的数组类型,在内存中以连续的方式存储其元素。 具体来说,mod.rs文件中定义了以下…

Elasticsearch:使用 ELSER v2 文本扩展进行语义搜索

Elastic 提供了一个强大的 ELSER 供我们进行语义搜索。ELSER 是一种稀疏向量的搜索方法。我们无需对它做任何的微调及训练。它是一种 out-of-domain 的模型。目前它仅对英文进行支持。希望将来它能对其它的语言支持的更好。更多关于 ELSER 的知识,请参阅文章 “Elas…

MySql——1146 - Table‘mysql.proc‘doesn‘t exit是这个

项目场景: 做自己的小项目需要连接mysql数据库 问题描述 点击数据库时报错 1146 - Table’mysql.proc’doesn’t exit 原因分析: 误删原生的mysql数据库 解决方案: 重新安装装部署mysql就好了 注意不要轻易删除原生的东西

day55 算法训练|动态规划part15

392.判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的…

react学习第一天

脚手架的创建 1.创建环境变量 npm init -y 2.创建node-modules npm add -D create-react-app 3.创建脚手架 npx create-react-app react-demo1 报错一号 报错原因:node版本太低 解决:升级版本 nvm install 14.0.0 nvm use 14.0.0 报错二号 报错原因&…

牛客网SQL训练5—SQL大厂面试真题

文章目录 一、某音短视频1.各个视频的平均完播率2.平均播放进度大于60%的视频类别3.每类视频近一个月的转发量/率4.每个创作者每月的涨粉率及截止当前的总粉丝量5.国庆期间每类视频点赞量和转发量6.近一个月发布的视频中热度最高的top3视频 二、用户增长场景(某度信…

git上传代码到github远程仓库

1、添加SSH公钥 为了把本地的仓库传到github,还需要配置ssh key,说白了就是为了把本地的代码上传到github。 1、前置准备 本地需要安装git:Git - Downloads。安装成功后本地右键鼠标会多出一些git选项。 2、添加SSH Key 首先在本地创建s…

红队打靶练习:MISDIRECTION: 1

信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.12.128 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.12.1 00:50:56:c0:00:08 …

Linux环境下OpenSSH升级到 OpenSSH_9.5p1(内置保姆级教程)

我最近在修复服务器的openssh漏洞的时候是服务器生产环境,自己在做的时候,就遇到的重启之后直接断掉ssh的连接,最后发现原因是没配置sshd_config的允许远程用户登录,因此,在此记录一下升级openssh的操作步骤&#xff0…

算法基础之能被整除的数

能被整除的数 核心思想&#xff1a; 容斥原理 总面积 1-23-4…. 总集合元素中个数 1-23-4…. #include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N 20;typedef long long LL;int p[N];int main(){int n,m;cin&…

十八、任务通知

1、前言 (1)所谓“任务通知”&#xff0c;可以反过来读"通知任务"。我们使用队列、信号量、事件组等等方法时&#xff0c;并不知道对方是谁。使用任务通知时&#xff0c;可以明确指定&#xff1a;通知哪个任务。 (2)使用队列、信号量、事件组时&#xff0c;我们都需…

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项样题卷②

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项&#xff08;高职组&#xff09; 样题&#xff08;第2套&#xff09; 目录 2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项&#xff08;高职组&#xff09; 样题&#xff08;第2套&#xff09; 模块…

Topics(动态路由)

Topic类型的Exchange与Direct相比&#xff0c;都是可以根据RoutingKey把消息路由到不同的队列中。只不过Topic类型Exchange可以让队列在绑定路由时可以使用通配符。 *&#xff1a;匹配不多不少刚好一个单词。 #&#xff1a;匹配一个或多个词。 举例&#xff1a; audit.#可以匹配…