flutter 使用Image . memory()对要显示的Base 64图像进行解码时出现无效字符(在字符77处)

y0u0uwnf  于 2022-12-24  发布在  Flutter
关注(0)|答案(2)|浏览(352)

所以我尝试在flutter中使用base64字符串显示一个图像,使用以下代码:

class GeneratedImages extends StatelessWidget {
      const GeneratedImages({
        Key? key,
       required this.imageBytes,
   }) : super(key: key);
     final String imageBytes;

    @override
          Widget build(BuildContext context) {
return Image.memory(
   const Base64Decoder().convert(imageBytes),
  errorBuilder: (_, object, stackTrace) {
    return const Center(
      child: Icon(Icons.image_not_supported),
    );
  },
);
}
}

当我运行代码时,显示以下错误

FormatException: Invalid character (at character 77)

我拥有的Base 64字符串是:/9j/44AAQSKZJRgABAQUS/2wBDAAUDBAQEAwUEBAQFBQGBwwIBwcHBw8LCwMEQ8SEhEP ERETFhwXExqaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/2wAARCAEAAQA文件5uYR9j05ISHI/eMTjPTGCPbtWJqHi3xJcyBhew27548oKMDPAG7k9cV1UsJWTu3YYqYml6n//Z

    • 一个
    • 任何帮助都将不胜感激**
5jvtdoz2

5jvtdoz21#

基于@Jamesdlin评论中建议的答案。
删除字符串中存在的所有空格将解决这个问题。
能够使用以下命令删除空格:

base64.decode(imageBytes.replaceAll(RegExp(r'\s+'), '')),
eqoofvh9

eqoofvh92#

如果您的Base64字符串在逗号后面包含数据,因为它是由RFC-2397定义的。Dart的Uri类基于RFC-3986,因此您不能使用它。

    • 用逗号分隔字符串并取其最后一部分**:
String imgbase64 = 'data:image/gif;base64,...';
Uint8List _bytes = base64.decode(imgbase64.split(',').last);

参考:https://stackoverflow.com/a/59015116/12382178

相关问题