发布于 2018-03-23 17:53:55
您不应该创建一个堆栈来预加载图像;您要寻找的是NetworkImage类。您可以维护一组手动加载的NetworkImage类,并将其中一个类传递到Image构造函数中,但我相当肯定,flutter实际上自动缓存了您在内存中加载的最后几幅图像,因此甚至不需要这样做(我想我听到了最后100幅图像,但我可能错了)。
不幸的是,API并不是那么简单(在颤振回购中有一个错误打开),但它也没有那么困难。
您所需要的只是这样一个方法(或者只是在一个构建函数中这样做):
static void preload(BuildContext, String path) {
final configuration = createLocalImageConfiguration(context);
NetworkImage(path).resolve(configuration);
}从任何有有效构建上下文的地方调用它。而TBH,您可以自己构建ImageConfiguration并将其传递给它(只需查看createLocalImageConfiguration的源代码就可以了解这一点)。
如果您想获得更多的兴趣,而不是仅仅创建一个NetworkImage并解析它,您可以使用一个类来维护预加载的NetworkImage的映射,并在您需要的时候返回它们。
您可以做的另一件事情可能足以解决您的问题,而无需做任何其他事情,那就是在构造gaplessPlayback = true的位置设置Image.network --这将确保在完全加载下一个映像之前,映像不会切换。
希望这有助于)。如果它不起作用,尽管让我知道,我会再深入一点--我自己还没有在代码中这样做。
https://stackoverflow.com/questions/49454214
复制相似问题