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

Flutter中如何在Html组件内实现文本搜索功能?

实现flutter_html组件内的关键词搜索高亮功能

核心思路

监听TextFormField的输入内容,将原始HTML文本中的目标关键词替换为带高亮样式的HTML标签,再把处理后的HTML传给Html组件渲染展示。

具体实现步骤

  1. 定义状态变量
    先声明用于存储原始HTML、搜索关键词和处理后高亮HTML的状态变量:
String originalHtml = ""; // 从API获取的原始HTML内容
String searchKeyword = "";
String highlightedHtml = "";
  1. 绑定搜索输入与HTML处理逻辑
    在TextFormField的onChanged回调中,根据输入的关键词动态修改HTML内容,添加高亮样式:
TextFormField(
  onChanged: (value) {
    setState(() {
      searchKeyword = value;
      if (searchKeyword.isEmpty) {
        // 清空搜索时恢复原始HTML
        highlightedHtml = originalHtml;
      } else {
        // 正则全局匹配关键词,支持忽略大小写
        final regex = RegExp(searchKeyword, caseSensitive: false);
        highlightedHtml = originalHtml.replaceAllMapped(
          regex,
          (match) => '<span style="background-color: yellow; color: black;">${match.group(0)}</span>',
        );
      }
    });
  },
  decoration: const InputDecoration(
    hintText: "输入关键词搜索",
    prefixIcon: Icon(Icons.search),
  ),
)
  1. 渲染处理后的HTML
    将处理好的带高亮的HTML传给Html组件:
Html(
  data: highlightedHtml,
),

额外说明

  • 若原始HTML包含特殊字符,需确保API返回的是正确转义后的内容,避免替换操作破坏HTML结构。
  • 支持多关键词搜索的话,可修改正则表达式为RegExp("关键词1|关键词2", caseSensitive: false)。
  • 高亮样式可自定义,调整<span>的style属性即可修改背景色、字体样式等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:32:33