我想通过按下按钮添加和删除每个项目,以避免网络图像的加载时间。 我的想法是将〜5个图像添加到堆栈中,并且能够移除顶部图像并将另一个图像添加到背面,以便可以预加载。
如果使用Stack class
,我找不到任何文档或答案我也有使用Dismissible的想法,但似乎没有办法改变它的儿童和背景。
答案 0 :(得分:1)
您不必创建堆栈来预加载图像;您正在寻找的是NetworkImage类。您可以维护一组您手动加载的NetworkImage类,并将其中一个传递给Image
构造函数,但我确信flutter实际缓存了您最后几张图像。自动加载到内存中,甚至不需要(我想我听过最后100张图片,但我可能错了)。
不幸的是,API并不是那么简单(在颤动的回购中有bug对此开放),但它也不是那么困难。< / p>
你需要的只是一个像这样的方法(或者只是在构建函数中执行它):
static void preload(BuildContext, String path) {
var configuration = createLocalImageConfiguration(context);
new NetworkImage(path)..resolve(configuration);
}
从任何有效的构建上下文的地方调用它。和TBH一样,你可以自己构建ImageConfiguration
并将其传递给它(只需查看createLocalImageConfiguration
的来源就可以了解它。)
如果你想对它有点兴趣,而不是仅仅制作一个NetworkImage
并解析它,你可以有一个类来维护一个预加载的NetworkImage
的地图并在你的时候返回它们想。
你可以做的另一件事可能足以解决你的问题,而不做任何其他事情是设置gaplessPlayback = true
你构建你的Image.net工作 - 这将确保图像不会切换,直到下一张图片已满载。
希望有帮助=)。如果它实际上没有工作让我知道,我会深入挖掘一下 - 我自己还没有在代码中完成它。