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

如何在flutter_quill中从原始HTML字符串获取Delta或实现HTML转Delta?

解决HTML转flutter_quill可用Delta格式的方案

要把服务器返回的HTML字符串导入flutter_quill编辑器,核心是完成HTML到Delta格式的转换,以下是具体实现步骤:

  • 引入flutter_quill_html_converter依赖,这个包专门用于在HTML和flutter_quill的Delta格式之间互相转换。在pubspec.yaml中添加:

    dependencies:
      flutter_quill_html_converter: ^最新版本号
    

    (注:替换成当前pub上的最新版本号)

  • 编写转换逻辑,将HTML字符串转为Delta,再赋值给QuillController:

    import 'package:flutter_quill/flutter_quill.dart';
    import 'package:flutter_quill_html_converter/flutter_quill_html_converter.dart';
    
    // 从服务器获取的HTML字符串
    String htmlContent = "<p>这是从服务器获取的<strong>富文本内容</strong></p>";
    
    // 将HTML转换为Delta
    Delta delta = HtmlToDeltaConverter.convert(htmlContent);
    
    // 初始化QuillController并加载Delta
    QuillController controller = QuillController(
      document: Document.fromDelta(delta),
      selection: const TextSelection.collapsed(offset: 0),
    );
    
  • 特殊标签兼容处理:如果HTML中包含flutter_quill不支持的标签(比如某些复杂表格、特殊样式),可以通过自定义转换器的回调来处理,比如:

    Delta delta = HtmlToDeltaConverter.convert(
      htmlContent,
      customElementHandler: (element) {
        // 处理自定义或不兼容的标签,返回对应的Delta操作
        if (element.localName == 'span' && element.classes.contains('custom-red')) {
          return Delta()..insert(element.text, {'color': '#ff0000'});
        }
        return null; // 返回null则使用默认处理逻辑
      },
    );
    

内容的提问来源于stack exchange,提问作者Andrey Abaimov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:25:31