Flutter Web中Dio响应字节图片无法转为Uint8List问题求助
Flutter Web中Dio响应字节图片转Uint8List解决方案
核心问题:你的代码错误地用
Utf8Decoder处理二进制图片数据,这会破坏原始字节;同时未配置Dio请求返回二进制类型数据,导致_response.data可能是字符串而非原始字节。解决方案步骤:
- 修改Dio请求,指定返回二进制类型
在发起GET请求时,设置responseType: ResponseType.bytes,让Dio直接返回Uint8List类型的原始图片字节。
修改后的代码示例:final _response = await _apiService.getCall( ApiConstants.url_user_qr + query, options: Options(responseType: ResponseType.bytes), ); if (_response?.statusCode == 200) { Uint8List imageBytes = _response!.data; // 直接获取Uint8List,无需额外转换 // 后续可使用Image.memory(imageBytes)展示图片 } - 检查ApiService封装
如果你的_apiService.getCall是封装后的方法,需要确保它支持传递Options参数,或者在封装二进制请求时默认设置responseType: ResponseType.bytes。
- 修改Dio请求,指定返回二进制类型
错误原因说明:
图片属于二进制数据,并非UTF-8编码的文本,使用Utf8Decoder解码会导致字节丢失或乱码,无法还原为有效图片数据。正确的做法是让Dio直接返回原始二进制字节,无需额外解码操作。
内容的提问来源于stack exchange,提问作者Tushar Dubey
相关产品推荐
相关产品推荐

