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

Flutter中如何将NFT的Base64 SVG数据URL转为可显示图片?

解决Flutter中NFT Data URL显示"Invalid image data"的问题

第一步:验证解码内容是否为HTML

先确认你的猜测,把Data URL中的base64部分(去掉data:image/svg+xml;base64,前缀)解码出来查看实际内容:

// 替换成你的完整base64字符串
String base64Content = "PHN2ZyB3aWR0...";
String decodedContent = utf8.decode(base64.decode(base64Content));
print(decodedContent);

如果打印结果是HTML代码,说明确实不是图片,需要从HTML中提取真实图片资源。

第二步:从HTML中提取真实图片

如果解码后是HTML,找到其中的<img>标签,提取src属性值:

  • 若src是普通HTTP/HTTPS链接,直接用Flutter的Image.network()加载:
    Image.network("https://example.com/real-nft-image.png");
    
  • 若src是另一个Data URL,去掉前缀后重新解码,再根据图片类型处理(PNG/JPG用Image.memory,SVG用第三方包)

第三步:如果是SVG格式的问题

如果解码后确实是SVG,但Image.memory报错,因为Flutter原生不支持SVG,需要用第三方包flutter_svg:

  1. 在pubspec.yaml中添加依赖:
    dependencies:
      flutter_svg: ^2.0.9 # 可替换为最新版本
    
  2. 导入包并加载SVG:
    import 'package:flutter_svg/flutter_svg.dart';
    
    // 解码base64内容
    final svgBytes = base64.decode(base64Content);
    // 用SvgPicture.memory显示
    SvgPicture.memory(svgBytes);
    

内容的提问来源于stack exchange,提问作者Long

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:40:29