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.