Flutter 3中使用flutter_html展示API返回HTML数据失败求助
问题描述
从API获取HTML格式响应,需在Flutter 3页面中展示,使用flutter_html: 3.0.0-alpha.5插件但数据无法显示。
API返回的HTML响应片段
"message":"<div class='border-bottom pb-1'>New Item Created By Haider</div><table class='table mt-1 border mb-0 table-hover table-border bg-white table-sm table_format'> <tbody> <tr> <td class='font-small-1'>Name</td> <td class='font-small-1'>Test 4Yyyyy</td> </tr> <tr> <td class='font-small-1'>Email</td> <td clas
代码片段
child: Html( data: _List.message?.toString() ?? "", style: { "body": Style( color: AppColor.WHITE.withOpacity(0.8), ), 'html': Style(textAlign: TextAlign.start, alignment: Alignment.bottomLeft), "td": Style( padding: EdgeInsets.only( left: 20, top: 2, bottom: 2), alignment: Alignment.topLeft, // margin: EdgeInsets.only(left: 10), // width: 156, ), }, ),
解决思路
- 修复HTML完整性:当前API返回的HTML片段不完整(末尾
<td clas未闭合),残缺的HTML会导致渲染失败,需确保获取到完整、格式合规的HTML内容。 - 处理转义字符:API返回内容包含
"转义符,需先将其解码为正常双引号,确保传递给Html组件的是纯HTML字符串。若API响应是JSON格式,解析时会自动处理转义;若为字符串形式,可通过replaceAll('"', '')手动替换。 - 排查样式冲突:当前设置
body颜色为半透明白色,若页面背景为浅色,内容会因对比度不足无法查看。建议先移除自定义样式,用默认样式测试是否显示,再逐步调整样式参数。 - 升级插件版本:
3.0.0-alpha.5是测试版本,存在潜在bug。尝试升级到flutter_html的稳定版本,避免版本兼容性问题。 - 确保组件有足够空间:若HTML内容较长,需将
Html组件包裹在SingleChildScrollView或Expanded中,避免因父组件空间不足导致内容被截断或不显示。 - 验证数据有效性:打印
_List.message?.toString()的实际值,确认传递给Html的data参数不为空、是有效的HTML字符串,而非null或空值。
内容的提问来源于stack exchange,提问作者sonalika
相关产品推荐
相关产品推荐

