这篇文章主要讲解了“Flutter网络图片本地缓存如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flutter网络图片本地缓存如何实现”吧!Flutter
原有的图片缓存机制,是通过PaintingBinding.instance!.imageCache
来管理缓存的,这个缓存缓存到的是内存中,每次重新打开APP
或者缓存被清理都会再次进行网络请求,大图片加载慢不友好,且增加服务器负担。1、查看FadeInImage.assetNetwork
、Image.network
等几个网络请求的命名构造方法,初始化了ImageProvider
。其中: image = ResizeImage.resizeIfNeeded(cacheWidth, cacheHeight, NetworkImage(src, scale: scale, headers: headers)),
,使用ImageProvider
类型的NetworkImage
创建了ImageProvider
类型的ResizeImage
。而NetworkImage
是一个继承ImageProvider
的抽象类。其中工厂方法给了一个值,const factory NetworkImage(String url免费云主机域名, { double scale, Map
进入network_image.NetworkImage
,到了_network_image_io.dart
文件。对其中的_loadAsync
方法进行修改,实现图片的本地存储和获取,即可。1、新建一个文件my_local_cache_network_image.dart
,将_network_image_io.dart
内容复制过来,进行修改。 2、全部文件内容如下(非空安全版本):主要修改有: 1、从本地获取缓存并返回2、图片网络情请求完之后,存储到本地3、保存到本地、从本地获取图片、获取并创建本地缓存路径的具体实现,主要是最其中图片网络请求获取到的bytes
和图片的url
进行存储等操作。将上面的命名构造方法复制出来,创建一个自己的命名构造方法,比如(部分代码):将ResizeImage.resizeIfNeeded
中的NetworkImage
替换为MyLocalCacheNetworkImage
即可。感谢各位的阅读,以上就是“Flutter网络图片本地缓存如何实现”的内容了,经过本文的学习后,相信大家对Flutter网络图片本地缓存如何实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!
今天小编给大家分享一下怎么用php正则替换以什么开头的字符串的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 一、PHP正则表达式概述PHP正则表…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。