我正在尝试将容器的背景图像设置为来自资产的图像,如下所示:
return new Container(
decoration: new BoxDecoration(
image: new DecorationImage(
image: new AssetImage(images[index]),
fit: BoxFit.cover,
),
),
但这将需要一些时间来加载和返回空白,同时屏幕直到图像加载。.
因此,我尝试在构建之前预加载图像,如下所示:
@override
void initState() {
precacheImage(new AssetImage(images[1]), context);
precacheImage(new AssetImage(images[2]), context);
precacheImage(new AssetImage(images[3]), context);
super.initState();
}
这返回了这个错误:
我不确定,但我想,你可以试试FutureBuilder
import 'dart:ui' as ui;
class MyImage extends StatelessWidget {
MyImage(this._imgSrc);
final String _imgSrc;
@override
Widget build(BuildContext context) {
Image image = Image.asset(_imgSrc);
Completer<ui.Image> completer = new Completer<ui.Image>();
image.image.resolve(ImageConfiguration()).addListener((ImageInfo info, bool _) {
completer.complete(info.image);
});
return FutureBuilder(
future: completer.future,
builder: (context, AsyncSnapshot<ui.Image> snapshot) {
return snapshot.hasData ? image : Container();
});
}
我有同样的问题,解决方案是在错误描述本身:
基于继承的小部件的初始化可以放在didChangeDependencies方法中,该方法在initState之后以及依赖项发生更改时调用。
下面是我的代码的简化版本,在方法didChangeDependencies中预加载图像:
class _SampleWidgetState extends State<SamleWidget> {
Image image1;
Image image2;
Image image3;
Image image4;
Image currentImage;
@override
void initState() {
super.initState();
image1 = Image.asset("assets/image1.png");
image2 = Image.asset("assets/image2.png");
image3 = Image.asset("assets/image3.png");
image4 = Image.asset("assets/image4.png");
currentImage = image1;
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
precacheImage(image1.image, context);
precacheImage(image2.image, context);
precacheImage(image3.image, context);
precacheImage(image4.image, context);
}
@override
Widget build(BuildContext context) {
return Container(
child: currentImage,
);
}
void setImage(int index) {
switch (index) {
case 1: currentImage = image1; break;
case 2: currentImage = image2; break;
case 3: currentImage = image3; break;
case 4: currentImage = image4; break;
}
}
}
希望这有助于:)
在JavaFX中,我使用stage1从一个阶段切换到另一个阶段。隐藏();第二阶段。show(); 然而,第二阶段相当大,包含了一大堆元素。所以当我显示()它时,当它第一次弹出时,有一段400毫秒的时间,整个阶段是空的和灰色的。然后所有的元素都出现了。 太难看了。这是在i7上,有一个非常好的图形处理器。 我已经注意到,如果我展示它,然后隐藏它,然后再次展示它,最终的节目从它出现在屏幕上的那一刻起就
以下是错误按摩: 无法加载Asset:Assets/Images/Waiting.png当引发异常时,这是堆栈图像提供程序:AssetImage(bundle:null,name:“Assets/Images/Waiting.png”)图像键:AssetBundleImageKey(bundle:PlatformAssetBundle#e3e67(),name:“Assets/Images/Wai
我知道我将文本文件放在了assets\chat1的位置。txt,我的代码也可以与其他txt一起使用,但不知何故,我总是遇到以下错误: 发生异常。 错误(无法加载资产:assets/chat1.txt) 我的代码: pubspec.yaml
我试图从URL中获取数据,但我需要的信息需要几秒钟才能加载,并且在加载之前只在HTML中显示为加载,所以当我使用此代码时,我无法提取我需要的数据。 我怎么能让网址加载一段时间,然后再把超文本标记语言去掉呢?
即使其他资产(js,css)正在被成功加载和服务,允许的img文件夹中的图像没有被服务,一个破碎的图像显示在指定的页面上。 这是映像所在的位置: src/main/resources/statig/img/image.png 请指导我如何进行? PS:我使用的是Java DSL,而不是基于xml的配置。 我做了搜索,并看到了几个解决方案不适合我的情况。(在此之前对以下内容进行了检查:
我正在尝试将wordpress安装在一个位于正面HTTPS负载平衡器后面的服务器上。 问题是我尝试安装它的服务器不使用HTTPS,因为它在安全网络中并且只与负载均衡器对话。 我猜wordpress检测到服务器协议,所以现在当我尝试安装它时,希望通过HTTP加载所有资产。 浏览器为此向我大喊“混合内容”警告。如果不加载cs/js文件,即使尝试运行整个安装过程也很困难。 我只想告诉wordpress尝