一个 Flutter 包,可实现字符级别的文本高亮,非常适合在文本中突出显示搜索关键词。它提供简单的集成方式和可自定义的匹配子字符串样式选项,适用于搜索界面。该包支持 Android、iOS、Web、macOS、Windows 和 Linux 等多个平台,确保在不同设备上行为一致。通过 pub 命令进行最少配置,开发者可以清晰标记搜索中的相关文本段落,从而提升用户体验。
适合场景
搜索结果预览
带有视觉提示的文本过滤
自定义搜索 UI 组件
实时关键词高亮
表单中的用户输入反馈
文档或内容扫描
主要特点
字符级子字符串匹配
可自定义高亮颜色和样式
简单的 API 用于集成
跨平台兼容性
支持多个文本小部件
可配置的匹配灵敏度
适合对象
开发搜索密集型应用的开发者
需要视觉反馈的UI设计师
需要实时文本高亮的应用程序
教育或文档审查工具
内容发现界面
使用建议
可能会影响非常长文本的性能
需要手动处理文本更新
仅限子字符串匹配(不支持正则表达式)
样式可能需要平台特定的调整
不支持嵌套文本跨度
原始 README
以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。
substring_highlight
Highlight Flutter text at the character-level.
Designed for case-insensitive search-term highlighting, a single search term sub-string is highlighted (perhaps multiple times) within a longer string.
Inspired by the existing Flutter package "highlight_text" which supports word matches ('Peter''), but substring_highlight has more granular character-by-character matches (e.g., 't' in 'Peter').
Limitations:
Highlighted text is not clickable
Doesn't solve perplexing world problems like hunger and climate change
The substrings being searched for highlighting don't have to match at the beginning of the longer strings (can be anywhere inside).
Even space characters will match, but not be highlighted, obviously.
Ancestor MUST have textDirection set (required by internal RichText widget), either through MaterialApp widget or explicitly wrapped by a Directionality widget: