Flutter应用如何实现带格式文本输入并输出为HTML格式存储
Flutter富文本输入转指定格式HTML实现方案
- 选用成熟富文本输入组件
优先用flutter_quill组件,它是Flutter生态中维护度较高的富文本编辑器,自带可定制的格式工具栏,支持加粗、斜体、换行等你需要的基础格式,可直接匹配你需求中的输入控件样式。你只需要在pubspec.yaml中引入对应依赖,初始化控制器后根据需求裁剪工具栏按钮,隐藏不需要的格式选项即可。 - 实现标签格式转换
组件默认支持导出原始HTML内容,你只需要加一层简单的标签映射逻辑,即可转换成你要求的简化HTML格式,示例代码如下:
调用该方法处理编辑器导出的内容,即可直接得到符合要求的存储用字符串。import 'dart:convert'; String formatToTargetHtml(String originHtml) { // 移除不需要的p标签 String processed = originHtml.replaceAll(RegExp(r'</?p>'), ''); // strong标签替换为b标签 processed = processed.replaceAllMapped(RegExp(r'<(/?)strong>'), (match) => '<${match.group(1)}b>'); // em标签替换为i标签 processed = processed.replaceAllMapped(RegExp(r'<(/?)em>'), (match) => '<${match.group(1)}i>'); // 若需要将标签转义为实体编码存入数据库,打开下方注释即可 // processed = const HtmlEscape().convert(processed); return processed; } - 轻量场景自定义实现
如果你的格式需求只有加粗、斜体两种,也可以自己封装实现:用普通TextField作为输入载体,上方加对应的格式按钮,点击按钮时给选中的文本插入自定义标记,最终提交时将标记批量替换为对应的HTML标签即可,这种方案没有第三方依赖,适合极简场景。
内容的提问来源于stack exchange,提问作者Ragawender Sivanraj
相关产品推荐
相关产品推荐

