Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 在颤振/飞镖中使用动态预加载图像_Image_Flutter_Dart - Fatal编程技术网

Image 在颤振/飞镖中使用动态预加载图像

Image 在颤振/飞镖中使用动态预加载图像,image,flutter,dart,Image,Flutter,Dart,我目前有一些图像,图像名称由函数返回,并根据如下变量动态调用: String _setImage() { if (currentQuestion > 1 && currentQuestion < 11) { return "assets/images/image_$intensityIndex.png"; } else { return "assets/images/image.png"; } } String\u setImage(){

我目前有一些图像,图像名称由函数返回,并根据如下变量动态调用:

String _setImage() {
  if (currentQuestion > 1 && currentQuestion < 11) {
    return "assets/images/image_$intensityIndex.png";
  } else {
    return "assets/images/image.png";
  }
}
String\u setImage(){
如果(currentQuestion>1&¤tQuestion<11){
返回“assets/images/image_u$intensityIndex.png”;
}否则{
返回“assets/images/image.png”;
}
}
我想切换到预加载图像,我正在使用中描述的技术,但我不确定如何让函数返回一个图像,该图像的名称是基于另一个变量动态确定的。以下是我到目前为止的情况:

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;
  }
}
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);
}
图像_setImage(){
如果(currentQuestion>1&¤tQuestion<11){
返回;
}否则{
返回图像0;
}
}
感谢您的帮助

我不确定如何返回名称为动态的图像 根据另一个变量确定

您不需要使用precach
返回
,因为如果您使用的是缓存的精确图像

例:

如果我用另一种方式解释:

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.

感谢您的快速回复@blasanka。“返回”不是用于预切。这是因为它在一个函数中。我已经用更多的代码更新了我的问题。为了澄清,我仍然需要保留image0=Image.asset('assets/images/Image_0.png');在didChangeDependencies()中的initState()和precacheImage中,对吗?@Stephanie因为,
initState
didChangeDependencies
之前调用,您所做的对于第一次访问是无用的(您所做的是在分配给小部件后缓存)。在
initState
didChangeDependencies
中尝试
precacheImage
将其分配给
Image.asset
。在添加到
Image.asset()
之前,通过在变量中保留资产路径来缓存它。谢谢@Blasanka!它是如何工作,我期待!
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.