我获得了图像 Base64 编码的图像数据,但我获得的其中一张图像未上传,并给出了以下形式的错误
无效长度必须是四的倍数。
另外,我的其他图像出现一会儿然后消失一会儿。他们来了又走。这个问题有解决办法吗?
Widget image(String thumbnail) {
final _byteImage = Base64Decoder().convert(thumbnail);
Widget image = Image.memory(_byteImage);
return image;
}
child: Column(
children: [
image(item.thumbnail),
Text(
item.name,
style: TextStyle(fontSize: 14, fontWeight: FontWeight.normal,fontFamily: 'Poppins'),
maxLines: 2,
),
],
),
您需要用一两个“=”填充 Base64 字符串,以达到 4 倍数的长度。
如果能不休息地除以4就可以了。如果长度模 4 的余数为 3,则在字符串中添加 1 个“=”;如果余数为“2”,则在字符串中添加 2 个“=”。
在 dart 中,你可以得到字符串的长度"".length
然后用模运算符计算除以 4 的余数%
:
由于实际问题是空字符串,因此以下代码也检查 null 或空字符串 https://stackoverflow.com/questions/42446566/dart-null-false-empty-checking-how-to-write-this-shorter并显示占位符图像而不是错误消息。
Widget image(String thumbnail) {
String placeholder = "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
if (thumbnail?.isEmpty ?? true)
thumbnail = placeholder;
else {
if (thumbnail.length % 4 > 0) {
thumbnail += '=' * (4 - thumbnail .length % 4) // as suggested by Albert221
}
}
final _byteImage = Base64Decoder().convert(thumbnail);
Widget image = Image.memory(_byteImage);
return image;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)