You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中Base64字符串转图片遇FormatException错误求助

Flutter中Base64字符串转图片遇FormatException错误求助

嗨,我来帮你排查这个问题~你遇到的FormatException: Invalid length, must be multiple of four是Base64解码时的典型错误,本质是你的base64String不符合Base64编码的规范,下面给你几个针对性的解决思路:

核心原因

Base64编码的字符串长度必须是4的整数倍,当长度不够时,会用=作为填充字符补全。你的字符串长度不符合要求,大概率是末尾缺少了填充符,或者字符串本身有截断、混入了无效字符。

具体解决方案

  • 补全Base64填充符
    可以写一个简单的工具函数,自动补全缺失的=:

    String fixBase64Padding(String base64Str) {
      int remainder = base64Str.length % 4;
      if (remainder != 0) {
        base64Str += '=' * (4 - remainder);
      }
      return base64Str;
    }
    

    然后修改你的图片解码代码:

    leading: Image(image: MemoryImage(base64Decode(fixBase64Padding(base64String)))),
    
  • 清理无效字符
    有时候Base64字符串里会混入换行、空格或者其他非Base64允许的字符(Base64只允许A-Za-z0-9+/=这些字符),可以先过滤掉:

    String cleanBase64(String base64Str) {
      return base64Str.replaceAll(RegExp(r'[^A-Za-z0-9+/=]'), '');
    }
    

    可以和上面的补全函数结合使用:fixBase64Padding(cleanBase64(base64String))

  • 检查字符串完整性
    确认你的base64String是不是完整的——比如从接口获取时有没有被截断,或者打印出完整的字符串内容,看看是不是中间有缺失。你可以先把这个字符串复制到本地的Base64解码工具里测试,看能不能正常解码出图片,这样能快速定位是字符串本身的问题还是代码处理的问题。

备注:内容来源于stack exchange,提问作者Mayati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:08:01