颤振网络映像在某些图像上失败并"invalid image data"



我正在从任何类型的网站上抓取一些图像。我需要计算他们的Size。为此,我发现适用于大多数情况的function

Future<Size> calculateImageDimension(String imageUrl) {
Completer<Size> completer = Completer();
late Image image;
image = Image.network(
imageUrl,
);
image.image.resolve(const ImageConfiguration()).addListener(
ImageStreamListener(
(ImageInfo image, bool synchronousCall) {
var myImage = image.image;
Size size = Size(myImage.width.toDouble(), myImage.height.toDouble());
if (!completer.isCompleted) {
completer.complete(size);
}
},
),
);
return completer.future;
}

问题

的上述功能失败

异常:图像数据无效

使用此imageUrl:调用它时

https://static.zara.net/photos///contents/cm/media-transformations/joinlife-ctx/joinlife-large.svg?ts=1611919362013

这里有什么问题?我也不能catchExeption。。。

我发现了这个相关的问题。但这对我也没有帮助。

我在Git上发现了这个问题,它对我来说很好。与其说是解决方案,不如说是一种变通方法:

Future<bool> hasValidImageData(String url,BuildContext context) async {
bool hasNoError=true;
var output=Completer<bool>();
precacheImage(
NetworkImage(url),
context,
onError: (e,stackTrace)=>hasNoError=false,
).then((_)=>output.complete(hasNoError));
return output.future;
}

它利用了CCD_ 7附带的CCD_。缺点是它需要BuildContext,但正如我所说,它对我有效,也是我找到的唯一解决方法。

相关内容

最新更新