使用Dart下载PNG文件(二进制文件)并显示它不工作

使用Dart下载PNG文件(二进制文件)并显示它不工作,dart,dart-webui,Dart,Dart Webui,我有一个RESTAPI,我正在调用它来检索要显示在我的页面上的PNG图像 我的代码: void getProfilePicture(变量pic_id){ 请求=新的HttpRequest(); request.responseType=“blob”; request.onReadyStateChange.listen(onPicture); //获取基本身份验证凭据 var authorization='Basic'+storage.loginda['password']; //构建JSON M

我有一个RESTAPI,我正在调用它来检索要显示在我的页面上的PNG图像

我的代码:

void getProfilePicture(变量pic_id){
请求=新的HttpRequest();
request.responseType=“blob”;
request.onReadyStateChange.listen(onPicture);
//获取基本身份验证凭据
var authorization='Basic'+storage.loginda['password'];
//构建JSON
Map reqData=新地图();
reqData['id']=pic_id.toString();
reqData['type']='WEB_SMALL';
//将请求发送到服务器。
var url=sifted.serverAPI+'/api/v1/pictures/getpicture';
request.open('POST',url);
request.withCredentials=false;
setRequestHeader('Authorization',Authorization);
setRequestHeader('Content-Type','application/json');
request.send(json.stringify(reqData));
}
void onPicture(41;{
如果(request.readyState==HttpRequest.DONE&&
request.status==200){
Blob Blob=新Blob(请求.响应);
FileReader=新的FileReader();
reader.onLoad.listen((fe){
ImageElement imgInput=query('#profilepic');
imgInput.src=reader.result;
});
reader.readAsDataUrl(blob);
}  
}
它不起作用,我在Dart编辑器中遇到以下错误:

Exception: type 'Blob' is not a subtype of type 'List' of 'blobParts'.
Exception: type 'Blob' is not a subtype of type 'List' of 'blobParts'.
对我做错了什么有什么建议吗


谢谢大家!

问题在于这一行:

Blob Blob=新的Blob(请求.响应);
Blob构造函数需要一个
列表
,而不是另一个
Blob
(请求.响应在您的用例中):
工厂Blob(列表blobParts,[字符串类型,字符串结尾])


只需删除该行,直接调用reader.readAsDataUrl(request.response),它应该可以工作。

您的建议有效,但现在我想尝试同步下载图像,所以在设置请求时。open('POST',url,async:false);这意味着我无法设置request.responseType=“blob”;现在它不工作了,给出错误:异常:“String”类型不是“Blob”的“Blob”类型的子类型。有什么建议吗?Thanks@IncitoNetworks对不要对二进制数据使用同步HttpRequest。这可能不是你想听到的,但如果主要浏览器决定不支持这一点,除了遵守之外,你也无能为力,这可能会产生一系列其他问题。