Flutter技术问题:如何移除文本中的HTML标签并展示纯文本?
移除HTML标签展示纯文本的两种方法
方法一:正则表达式快速处理(适合简单HTML结构)
直接用正则匹配所有HTML标签并替换为空字符串,代码修改如下:
Text( productController.privacypolicy.value.data!.shop!.privacyPolicy!.body.toString() .replaceAll(RegExp(r'<[^>]*>'), ''), style: GoogleFonts.poppins( color: Color(0xff1b1b1b), fontWeight: FontWeight.w400, fontSize: 16, letterSpacing: 0.5 ), ),
这个方法适合结构简单的HTML,比如只有<strong>、<p>这类基础标签的场景。
方法二:使用html包处理复杂HTML(更可靠)
如果HTML结构复杂(比如嵌套标签、特殊字符),推荐用官方维护的html包来解析提取纯文本:
- 先在
pubspec.yaml里添加依赖:
dependencies: html: ^0.15.4 # 可替换为最新版本
- 导入包并修改代码:
import 'package:html/parser.dart' show parse; // ... 其他代码 final htmlContent = productController.privacypolicy.value.data!.shop!.privacyPolicy!.body.toString(); final document = parse(htmlContent); final plainText = document.body!.text; Text( plainText, style: GoogleFonts.poppins( color: Color(0xff1b1b1b), fontWeight: FontWeight.w400, fontSize: 16, letterSpacing: 0.5 ), ),
这个方法能更精准地处理各种HTML结构,避免正则可能出现的遗漏或误匹配问题。
内容的提问来源于stack exchange,提问作者Divya
相关产品推荐
相关产品推荐

