首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预加载网络图像以避免加载时间

预加载网络图像以避免加载时间
EN

Stack Overflow用户
提问于 2018-03-23 16:22:24
回答 1查看 4.7K关注 0票数 1

我想添加和删除项目之上的每一个按钮按下,以避免加载时间的网络图像。我的想法是将5张图片添加到一个堆栈上,并且能够移除顶部的图像,并在背面添加另一个图像,这样它就可以预加载。

如果可以使用堆栈类,我没有找到任何文档或答案。

我也有使用可解雇的想法,但似乎也没有办法改变它的子环境和背景。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-23 17:53:55

您不应该创建一个堆栈来预加载图像;您要寻找的是NetworkImage类。您可以维护一组手动加载的NetworkImage类,并将其中一个类传递到Image构造函数中,但我相当肯定,flutter实际上自动缓存了您在内存中加载的最后几幅图像,因此甚至不需要这样做(我想我听到了最后100幅图像,但我可能错了)。

不幸的是,API并不是那么简单(在颤振回购中有一个错误打开),但它也没有那么困难。

您所需要的只是这样一个方法(或者只是在一个构建函数中这样做):

代码语言:javascript
复制
static void preload(BuildContext, String path) {
  final configuration = createLocalImageConfiguration(context);
  NetworkImage(path).resolve(configuration);
}

从任何有有效构建上下文的地方调用它。而TBH,您可以自己构建ImageConfiguration并将其传递给它(只需查看createLocalImageConfiguration的源代码就可以了解这一点)。

如果您想获得更多的兴趣,而不是仅仅创建一个NetworkImage并解析它,您可以使用一个类来维护预加载的NetworkImage的映射,并在您需要的时候返回它们。

您可以做的另一件事情可能足以解决您的问题,而无需做任何其他事情,那就是在构造gaplessPlayback = true的位置设置Image.network --这将确保在完全加载下一个映像之前,映像不会切换。

希望这有助于)。如果它不起作用,尽管让我知道,我会再深入一点--我自己还没有在代码中这样做。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49454214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档