Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在Flutter中更快地加载您的图像资源

在Flutter中更快地加载您的图像资源

原创
作者头像
徐建国
修改于 2021-09-09 06:32:45
修改于 2021-09-09 06:32:45
3.4K00
代码可运行
举报
文章被收录于专栏:个人路线个人路线
运行总次数:0
代码可运行

本文主要介绍在Flutter中更快地加载您的图像资源

<!--more-->

我们可以将图像放在我们的资产文件夹中,但如何更快地加载它们?这是 Flutter 中的一个秘密函数,可以帮助我们做到这一点 — precacheImage()

很多时候(尤其是在 Flutter Web 中),您的本地资源图像需要花费大量时间在屏幕上加载和渲染!

对于用户的角度来看E本是不好秒 pecially如果图像是屏幕的背景图像。如果图像是您屏幕中的任何组件,我们仍然可以显示微光或其他内容,以便用户知道该图像正在加载。但是我们不能对背景图像显示微光!

我们在 Flutter 中有一个简单而有用的方法,我们可以用它来更快地加载我们的资产图像——precacheImage()!

precacheImage 将 ImageProvider 和 context 作为必需参数并返回 Future<void>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Future<void> precacheImage( 
    ImageProvider<Object> provider, 
    BuildContext context, 
    {Size? size, 
    ImageErrorListener? onError} 
)

此方法将图像预取到图像缓存中,然后无论何时使用该图像,它的加载速度都会快得多。但是,ImageCache 不允许保存非常大的图像。

由于在此需要上下文,因此我们可以在可访问上下文的任何函数中添加 precacheImage()。我们可以将相同的内容放在第一个屏幕的didChangeDependencies()方法中!

例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void didChangeDependencies()
{ precacheImage(AssetImage("assets/logo.png"), context);precacheImage(AssetImage("assets/home_bg.png"), context);
super.didChangeDependencies();  
}

上面的例子将缓存logo.pnghome_bg.png放入ImageCache。所以现在,无论何时我们使用这个图像,它都会加载得更快!

结论

这是一个方便的提示,可以更快地加载您的图像资源!这是一个关于使用和不使用precacheImage()加载图像所需时间的小统计数据

你可以看到,开始的 3 个打印语句是没有 precacheImage 的,每次都花费近 10 毫秒。现在,下一个是 precacheImage,它在缓存中存储图像需要 14 毫秒。随后的加载只用了 5 毫秒。所以我们可以得出结论,它将加载时间减少到近 50%!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flutter 学习:ImageProvider工作流程和AssetImage 的自动分辨率适配原理
最近碰到一个问题,自己使用 AssetBundle 加载 asset 图片去绘制的时候,不能自动加载到正确分辨率下的图片。于是好奇想一探究竟—— ImageAsset 究竟做了什么,能自动适配不同分辨率的图片加载。
用户1468672
2020/11/13
7.4K0
Flutter 学习:ImageProvider工作流程和AssetImage 的自动分辨率适配原理
Flutter完整开发实战详解(十、 深入图片加载流程)
作为系列文章的第十篇,本篇主要深入了解 Flutter 中图片加载的流程,剥析图片流程中有意思的片段,结尾再实现 Flutter 实现本地图片缓存的支持。
GSYTech
2019/04/21
2.9K0
Flutter图片加载和缓存机制探究
今天来研究一下 Flutter 自身是如何加载图片和管理图片的。Flutter 提供了一个图片控件 Image,Image 定义了若干种加载图片的方式,包括 Image.asset、Image.file、Image.network、Image.memory。Image内部维护了一个 ImageProvider对象,ImageProvider则真正维护整个图片加载的工作。Widget 本身内部是体现在 RawImage中:
烧麦程
2022/05/10
2K0
Flutter图片加载和缓存机制探究
探索Flutter_Image显示Webp逻辑
最近探索了一下新增Flutter的Image widget对webp做一个stopAnimation的拓展的Api,顺便了解一下Image整个结构和对一些多帧图片的处理。我们先看看Image的一个类图结构。
徐建国
2021/11/30
9440
探索Flutter_Image显示Webp逻辑
Flutter | Image 源码分析与优化方式
Image 是 Flutter 用于显示图像的小组件,它可以加载网络,本地,文件或者内存中的图像,支持 JPEG、PNG、GIF、动画 GIF、WebP、动画 WebP、BMP 和 WBMP 格式。Flutter Image 本身也实现了内存缓存的机制,可以很大的提高图片展示速度等。
345
2022/02/11
2.7K0
Flutter | Image 源码分析与优化方式
Flutter图片缓存 | Image.network源码分析
Android高级工程师,6年以上开发经验,有丰富的代码重构和架构设计经验,负责京东商城我的京东的开发工作,热衷于学习和研究新技术。
京东技术
2018/07/30
7.1K0
Flutter图片缓存 | Image.network源码分析
Flutter中Widget 、Element、RenderObject角色深入分析
在 Flutter 中通过构建一系列的 Widget就可建立起一个应用,一系列的 Widget 通过一写的结构排列,构成 Widgets 树,类似 HTML 中的 DOM树。
早起的年轻人
2020/08/14
9500
Flutter中Widget 、Element、RenderObject角色深入分析
【Flutter 专题】127 图解基础 Image 小组件
Image 图片作为日常中最常用的 Widget 却也是最容易忽略的,和尚在日常中通常仅用到 Image 展示图片属性,但是 Image 本身非常强大,有很多和尚所不熟知的属性特征;今天和尚重新认识一下 Image Widget;
阿策小和尚
2021/07/05
1.4K0
【Flutter 专题】127 图解基础 Image 小组件
Flutter | 和小老弟一起学资源管理
Flutter安装包中会包含代码和assets (资源)两部分,其中 assets 是会打包到程序安装包中,可以运行时访问,常见的 assets 类型包括静态数据(json文件),配置文件,图标和图片等。
Petterp
2022/02/09
1.1K0
Flutter | 和小老弟一起学资源管理
【Flutter 组件集录】FadeInImage| 8月更文挑战
我们都知道,图片无论是从资源、文件、网络加载,都不会立刻完成,这样会出现短暂的空白,尤其是网络图片。自己处理默认占位图也比较麻烦。FadeInImage 的作用就是:在目标图片加载完成前使用默认图片占位,加载完成后,目标图片会渐变淡入,默认图片会渐变淡出,这样可以既解决图片加载占位问题,渐变的动画在视觉上也不显突兀。本文,就来全面介绍一下 FadeInImage 组件的使用以及简单的源码实现。
张风捷特烈
2022/03/18
1.4K0
【Flutter 组件集录】FadeInImage| 8月更文挑战
Flutter 1.17 对列表图片的优化解析
相信 Flutter 的开发者应该遇到过,对于大量数据的列表进行图片加载时,在 iOS 上很容易出现 OOM的问题,这是因为 Flutter 特殊的图片加载流程造成。
GSYTech
2020/08/11
1.5K0
Flutter 1.17 对列表图片的优化解析
Flutter--资源管理
Flutter可以添加代码以及assets到APP中。而每个Asset都是被打包在发布的APP中的,并且在APP运行时可以访问这些资源。
None_Ling
2019/03/11
1.9K0
Flutter入门三部曲(3) - 数据传递/状态管理
这个既熟悉又陌生类可以帮助我们在Flutter中沿着树向下传递信息。这个类只是简单的保存了一个状态而已。
deep_sadness
2018/08/17
1.3K0
Flutter入门三部曲(3) - 数据传递/状态管理
【Flutter 组件】004-基础组件:图片及 ICON
Flutter 中,我们可以通过 Image 组件来加载并显示图片,Image 的数据源可以是 asset 、文件、内存以及网络。
訾博ZiBo
2025/01/06
3820
【Flutter 组件】004-基础组件:图片及 ICON
带你快速掌握Flutter图片开发核心技能
在这篇文章中,将带着大家一起学习在Flutter中图片开发以及应用场景中的必备技能以及一些经验技巧。
CrazyCodeBoy
2019/12/10
1.6K0
带你快速掌握Flutter图片开发核心技能
Flutter组件学习(二)—— Image
上一节中,我们讲了 Flutter 中 Text 组件的一些用法以及 API,本节我们继续学习 Flutter 中的 Image 组件,同样先上图:
用户2802329
2018/12/21
1.5K0
第131期:flutter中的资源和图片
下个季度的目标是把前端监控相关的内容梳理出来,梳理出来之后可能会在公司内部做个分享~
terrence386
2023/02/25
1.5K0
第131期:flutter中的资源和图片
【Flutter实战】图片组件及四大案例
老孟导读:大家好,这是【Flutter实战】系列文章的第三篇,这一篇讲解图片组件,Image有很多高级用法,希望对您有所帮助。
老孟Flutter
2020/09/11
2.9K0
【Flutter实战】图片组件及四大案例
Flutter
在Flutter中和Widgets一起协同工作的还有另外两个伙伴:Elements和RenderObjects;由于它们都是有着树形结构,所以经常会称它们为三棵树。
愤怒的小鸟
2021/10/26
2K0
轻松 Flutter 入门,秒变大前端
本文作者:dickma,腾讯 IEG 前端开发工程师 本文不是Flutter的教程,只是对 Flutter 的技术特性,做了一些略全面的入门级的介绍,如果你听说过Flutter,想去了解他,但是又不想去翻厚厚的API,那么本文就是为你准备的。 随着纯客户端到Hybrid技术,到RN&Weex,再到如今的Flutter技术,客户端实现技术不断前进。在之前的一个APP项目中,因为历史原因当时选择了weex,随着使用的不断深入,我们逐渐发现了weex的渲染性能问题已经成为一个隐患和瓶颈。随着Flutter技
腾讯技术工程官方号
2019/11/08
4.3K1
轻松 Flutter 入门,秒变大前端
相关推荐
Flutter 学习:ImageProvider工作流程和AssetImage 的自动分辨率适配原理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验