如何将API返回的HTML格式响应转换为纯文本(Flutter场景)
Flutter去除HTML标签显示纯文本方案
方案一:正则表达式快速处理(适合简单HTML)
先写一个工具函数,用正则匹配并移除所有HTML标签:
String stripHtmlTags(String html) { final regex = RegExp(r'<[^>]*>', multiLine: true, caseSensitive: false); return html.replaceAll(regex, ''); }
接着修改你的plainText方法,调用这个函数处理quote字段:
Iterable<Widget>? plainText() { final quotePlanText = data?.map( (v) => Container( child: Center( child: Text( stripHtmlTags(v.qoute), // 替换为处理后的纯文本 style: TextStyle( fontSize: 22, fontFamily: 'Poppins', ), ), ), ), ); return quotePlanText; }
方案二:使用html包(复杂HTML场景更可靠)
如果API返回的HTML有嵌套标签、特殊实体(比如&),正则处理会有遗漏,推荐用官方维护的html包:
- 在
pubspec.yaml中添加依赖:
dependencies: html: ^0.15.4 # 建议使用最新版本
执行
flutter pub get安装依赖。导入包并编写转换函数:
import 'package:html/parser.dart' show parse; String stripHtmlTags(String html) { final document = parse(html); return document.body?.text ?? html; }
- 同样在
plainText方法中调用stripHtmlTags函数即可,用法和方案一一致。
小提示
- 可以先打印
stripHtmlTags(v.qoute)的结果,确认转换后的文本是否符合预期。 - 特殊字符实体(比如
<转<)只有html包能自动处理,复杂场景优先选这个方案。
内容的提问来源于stack exchange,提问作者usama haider
相关产品推荐
相关产品推荐

