首页 > 解决方案 > 在 Flutter/Dart 中使用动态预加载图像

问题描述

我目前有图像名称由函数返回并基于如下变量动态调用:

String _setImage() {
  if (currentQuestion > 1 && currentQuestion < 11) {
    return "assets/images/image_$intensityIndex.png";
  } else {
    return "assets/images/image.png";
  }
}

我想切换到预加载图像,我正在使用Preload images in a stateful widget on Flutter 中描述的技术,但我不确定如何让函数返回一个图像,该图像的名称是基于另一个变量动态确定的。这是我到目前为止所拥有的:

void initState() {
   super.initState();

  image0 = Image.asset('assets/images/image_0.png'); 
  image1 = Image.asset('assets/images/image_1.png');
  image2 = Image.asset('assets/images/image_2.png');
  image3 = Image.asset('assets/images/image_3.png');
}

void didChangeDependencies() {
  super.didChangeDependencies();

  precacheImage(image0.image, context);
  precacheImage(image1.image, context);
  precacheImage(image2.image, context);
  precacheImage(image3.image, context);
}

Image _setImage() {
  if (currentQuestion > 1 && currentQuestion < 11) {
    return ______________;
  } else {
    return image0;
  }
}

感谢所有帮助!

标签: imageflutterdart

解决方案


不确定如何返回名称是基于另一个变量动态确定的图像

您不需要return使用 precach,因为如果您使用缓存的精确图像。

前任:

precacheImage('assets/images/image_1.png'); // if this is the image name

Image.asset('assets/images/image_1.png'); // when you use this it is getting from the cache but the path should be same.

如果我换一种方式解释:

precacheImage("assets/images/image_$intensityIndex.png"); // image_1.png
Image.asset('assets/images/image_1.png'); // when you do this, asset taking from the cache by looking at the path.

推荐阅读