kim*_*Soo 4 base64 image dart flutter
我获得了图像 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,
),
],
),
Run Code Online (Sandbox Code Playgroud)
您需要用一两个“=”填充 Base64 字符串,以达到 4 倍数的长度。
如果能不休息地除以4就可以了。如果长度模 4 的余数为 3,则在字符串中添加 1 个“=”;如果余数为“2”,则在字符串中添加 2 个“=”。
在 dart 中,您可以使用 获取字符串的长度"".length,然后使用取模运算符计算除以 4 的余数%:
由于实际问题是空字符串,因此以下代码还会检查空字符串或空字符串,并显示占位符图像而不是错误消息。
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10186 次 |
| 最近记录: |