Flutter:网络图像缓存插件——cached_network_image

前言

为什么要使用这个插件,有什么用呢?毕竟官方提供了Image.network来进行网络图片加载

Image.networkCachedNetworkImage都可以用于在Flutter中加载网络图片,但它们之间有一些区别。

Image.network是Flutter核心库提供的一个构造函数,用于直接加载网络图片。它可以从给定的URL加载图片,并将其显示在应用程序的界面上。但是,Image.network没有内置的缓存机制,因此每次使用时都会重新下载图片,这可能会导致性能问题。

CachedNetworkImage是一个第三方插件,它提供了更高级的网络图片加载和缓存功能。它不仅可以加载网络图片,还可以将其缓存到本地文件系统中,以便在后续的加载请求中快速获取。这样可以节省网络带宽和加载时间,并提升应用程序的性能。

使用CachedNetworkImage插件,您可以更方便地管理网络图片的加载和缓存。
它提供了一些额外的功能,如加载进度指示器、加载错误处理和占位符图片等。此外,CachedNetworkImage还支持预加载和手动刷新缓存等功能,使您能够更好地控制图片加载的行为。

总结起来,Image.network是一个简单的用于加载网络图片的构造函数,而CachedNetworkImage是一个更强大的插件,提供了更好的网络图片加载和缓存功能,以及一些额外的特性。如果您需要更高级的图片加载和缓存功能,建议使用CachedNetworkImage插件。

基本使用

安装

flutter pub add cached_network_image

带占位符

Center(
  child: CachedNetworkImage(
    imageUrl: 'https://scpic.chinaz.net/files/default/imgs/2023-07-12/40fd0b90e02f7fd4.jpg',
    placeholder: (context,url) => const CircularProgressIndicator(),
    errorWidget: (context, url, error) => const Icon(Icons.error),
  ),
);

imageUrl参数指定了要加载的网络图片的URL。placeholder参数定义了加载过程中显示的占位符,通常使用一个加载指示器来表示。errorWidget参数定义了加载失败时显示的占位符,通常使用一个错误图标来表示。
在这里插入图片描述
带进度指示器

Center(
  child: CachedNetworkImage(
    imageUrl: 'https://scpic.chinaz.net/files/default/imgs/2023-07-12/40fd0b90e02f7fd4.jpg',
    progressIndicatorBuilder: (context, url, downloadProgress) => 
               CircularProgressIndicator(value: downloadProgress.progress),
    errorWidget: (context, url, error) => const Icon(Icons.error),
  ),
);

占位符和进度指示器可以同时使用。

结合Image使用

Image(image: CachedNetworkImageProvider(url))

结合其他小部件使用
imageBuilder 用于自定义容器

在这里插入代码片CachedNetworkImage(
  imageUrl: "http://via.placeholder.com/200x150",
  imageBuilder: (context, imageProvider) => Container(
    decoration: BoxDecoration(
      image: DecorationImage(
          image: imageProvider,
          fit: BoxFit.cover,
          colorFilter:
              ColorFilter.mode(Colors.red, BlendMode.colorBurn)),
    ),
  ),
  placeholder: (context, url) => CircularProgressIndicator(),
  errorWidget: (context, url, error) => Icon(Icons.error),
),

缓存目录
cached_network_image插件会将图片缓存在应用程序的缓存目录中。具体来说,它会将缓存文件存储在设备的本地文件系统中的应用程序缓存目录中。在Android设备上,缓存目录通常是/data/data/<应用程序包名>/cache,而在iOS设备上,缓存目录通常是Library/Caches/<应用程序包名>/cached_network_image插件会自动管理缓存文件的创建、读取和删除,使得我们可以方便地使用缓存功能,提高图片加载的效率和性能

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python教程(4)——Python开发工具PyCharm的下载与安装

PyCharm是一种专业的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains公司开发和维护。它提供了丰富的功能和工具&#xff0c;帮助开发人员更高效地编写、调试和测试Python代码。如果是一些大型Python项目强烈推荐用这个来开发。今天我们来介绍一下PyCha…

Microsoft Update Assistant导致 MAC 电脑内存占用过高解决方案

目录 问题: 排查原因: 解决方案: 问题: 一直很苦恼,每次开机隔会发下电脑内存就 100%了,这次找了下原因,也记录下. 排查原因: 通过 mac 自带的活动监视器,发现居然是Microsoft Update Assistant它导致的 解决方案: 那这样就简单了,这个应该是 word,execl 的一个自动更新程序…

融云出海:不止假发出口和四卡四待手机,「非洲市场」的参差与机遇

↑ 点击预约“融云北极星”直播↑ 点击预约“实时社区”直播 比白皮书更精炼省流&#xff0c;比图谱更实用有效。 融云《社交泛娱乐出海作战地图》&#xff0c;被多位大咖标记为出海人必备工作手册。针对地图的核心模块&#xff0c;我们推出了系列解读文章&#xff0c;更详尽…

56 # 实现 pipe 方法进行拷贝

pipe 是异步的&#xff0c;可以实现读一点写一点&#xff0c;管道的优势&#xff1a;不会淹没可用内存&#xff0c;但是在导入的过程中无法获取到内容 const fs require("fs"); const path require("path");fs.createReadStream(path.resolve(__dirname…

苹果平板电容笔好用吗?第三方apple pencil推荐

自从苹果推出了ipad的电容笔之后&#xff0c;一直在市场上保持着十分火爆的热度&#xff0c;但是因为Apple Pencil的价格太高&#xff0c;一般的消费者根本没有足够预算去入手。所以市场上就不断涌现出了不少可以很好代替Apple Pencil的平替电容笔&#xff0c;并且深受人们的热…

Word 插件实现读取excel自动填写

日常工作中碰到需要将EXCEL的对应数据记录填写到word文档对应的位置&#xff0c;人工操作的方式是&#xff1a; 打开exel表—>查找对应报告号的行—>逐列复制excel表列单元格内容到WORD对应的位置&#xff08;如下图标注所示&#xff09; 这种方法耗时且容易出错。实际上…

精选了6款好用的AI绘画工具,值得一试

近几年来&#xff0c;伴随着AI技术的发展&#xff0c;设计领域发生了巨大的变化。AI绘图工具的出现很大程度上减轻了设计师的工作负担&#xff0c;本文精选了6款优秀的AI绘图工具为大家推荐&#xff0c;一起来看看吧&#xff01; 1、即时灵感 即时灵感作为国产的AI绘图工具&a…

java导出pdf(纯代码实现)

java导出pdf 在项目开发中&#xff0c;产品的需求越来越奇葩啦&#xff0c;开始文件下载都是下载为excel的&#xff0c;做着做着需求竟然变了&#xff0c;要求能导出pdf。导出pdf倒也不是特别大的问题关键就是麻烦。 导出pdf我知道的一共有3中方法&#xff1a; 方法一&#xff…

Spring Batch之读数据库—JdbcCursorItemReader之自定义PreparedStatementSetter(三十八)

一、自定义PreparedStatementSetter 详情参考我的另一篇博客&#xff1a; Spring Batch之读数据库——JdbcCursorItemReader&#xff08;三十五&#xff09;_人……杰的博客-CSDN博客 二、项目实例 1.项目实例 2.代码实现 BatchMain.java&#xff1a; package com.xj.dem…

只需一个提示词解除GPT-4的字符限制!

ChatGPT的内存有限,GPT-3.5-turbo的限制为4897个令牌,而GPT-4的最大限制为8192。如果您在使用GPT-4进行聊天时超过8192个令牌(约6827个单词),它就会开始遗忘。我想出了一种新的技巧,可以轻松将对话扩展10倍。 这种技巧不会将对话中的每个字都保存到内存中。当您去开会时,会有人…

同比环比数据可视化

引言 数据分析和可视化在现代商业环境中变得越来越重要。随着数据的迅速增长&#xff0c;我们需要有效的工具来解释和理解这些数据。 数据可视化提供了一种直观的方式&#xff0c;帮助我们从海量数据中提取有意义的见解&#xff0c;以支持业务决策。 同比环比图作为一种常见的…

C#鼠标拖拽,移动图片实例

最近工作需要做一个鼠标可以拖拽移动图片的功能。 写了几个基本功能&#xff0c;勉强能用。这里记录一下。欢迎大神补充。 这个就是完成的功能。 下边的绿色是一个pictureBox&#xff0c;白色框也是一个pictureBox&#xff0c;他们二者是子父级关系。 绿色是父级&#xff0c…

selenium查找svg元素

目录 如何为SVG元素编写XPath 使用local-name&#xff08;&#xff09;的语法 需要记住的一点 将“and”与SVG元素一起使用 如何定位嵌套的SVG元素&#xff1f; XPath是一种用于定位XML文档中的web元素的语言&#xff0c;包括构成网页的HTML文档。在Selenium中&#xff0…

如何使用自动化构造随机路由模型

为什么要仿真随机路由&#xff1f; 路由器测试中&#xff0c;为了最大程度还原现网路由情况&#xff0c;评估路由器在现网环境下稳定工作各项指标&#xff0c;需要对导入路由进行离散仿真&#xff0c;目前路由仿真可分为导入路由与生成路由两种方式&#xff0c;导入路由需要现…

ceph对象存储和安装dashborad

一、ceph–RadosGW对象存储 数据不需要放置在目录层次结构中&#xff0c;而是存在于平面地址空间内的同一级别&#xff1b; 应用通过唯一地址来识别每个单独的数据对象; 每个对象可包含有助于检索的元数据&#xff1b; 在Ceph中的对象存储网关中&#xff0c;通过RESTful API在…

Stable Diffusion + EbSynth + ControlNet 解决生成视频闪烁

一、安装 1.1、安装ffmpeg 下载地址&#xff1a; 解压&#xff0c;配置环境变量 E:\AI\ffmpeg\bin 检查是否安装成功 1.2、安装SD的 EbSynth 插件 插件地址 https://github.com/s9roll7/ebsynth_utility 报错&#xff1a;ModuleNotFoundError: No module named extension…

降级npm后,出现xxx 不是内部或外部命令解决方法

比如我安装了anyproxy npm install anyproxy -g 之后在cmd中输入anyproxy 发现 anyproxy 不是内部或外部命令解决方法. 一般出现这样的问题原因是npm安装出现了问题&#xff0c;全局模块目录没有被添加到系统环境变量。 Windows用户检查下npm的目录是否加入了系统变量P…

短视频矩阵系统源码--开发实践

短视频矩阵系统源码开发技术&#xff1a; 1. 数据采集&#xff1a;使用Python的requests库进行数据爬取&#xff0c;使用Selenium模拟浏览器操作&#xff0c;解决抖音反爬虫机制。 2. 数据处理&#xff1a;使用Python的正则表达式、BeautifulSoup等库进行数据处理。 3. 关键…

【论文解读】2017 STGCN: Spatio-Temporal Graph Convolutional Networks

一、简介 使用历史速度数据预测未来时间的速度。同时用于序列学习的RNN(GRU、LSTM等)网络需要迭代训练&#xff0c;它引入了逐步累积的误差&#xff0c;并且RNN模型较难训练。为了解决以上问题&#xff0c;我们提出了新颖的深度学习框架STGCN&#xff0c;用于交通预测。 二、…

Unity 多相机 同屏显示

一 首先了解&#xff1a; 相机和Canvas 的渲染先后关系 什么是相机的渲染顺序&#xff1f; 答&#xff1a;简单理解就是 用毛刷 刷墙面&#xff0c;先刷的&#xff0c;会被后刷的 挡住 。 列如&#xff1a;相机01&#xff1a; 先渲染的大海&#xff0c;相机02&#xff1a;后…