flutter_html如何支持table显示

我在使用flutter_html插件显示HTML内容时,遇到表格(table)无法正常渲染的问题。请问如何配置flutter_html才能正确显示HTML中的表格?目前表格内容要么不显示,要么格式错乱。需要支持表格边框、单元格合并等基本功能,最好能提供具体的代码示例。

2 回复

flutter_html通过Html组件支持table显示,需确保依赖版本支持。使用customRender可自定义表格样式,如边框、颜色等。

更多关于flutter_html如何支持table显示的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter_html 支持通过 customRender 自定义渲染表格。以下为完整示例:

1. 基础表格支持

Html(
  data: "<table><tr><td>单元格内容</td></tr></table>",
  customRender: {
    "table": (context, child) {
      return SingleChildScrollView(
        scrollDirection: Axis.horizontal,
        child: Table(
          children: context.tree.children.map((child) => _buildTableRow(child)).toList(),
        ),
      );
    },
  },
)

2. 完整表格实现

Widget _buildTableRow(dom.Node node) {
  if (node is dom.Element) {
    return TableRow(
      children: node.children.map((child) => Container(
        padding: EdgeInsets.all(8),
        child: Html(data: child.innerHtml),
      )).toList(),
    );
  }
  return TableRow(children: [Container()]);
}

3. 表格样式优化

Table(
  border: TableBorder.all(color: Colors.grey),
  defaultColumnWidth: IntrinsicColumnWidth(),
  children: [...],
)

4. 完整示例

Html(
  data: """
  <table>
    <tr><th>标题1</th><th>标题2</th></tr>
    <tr><td>内容1</td><td>内容2</td></tr>
  </table>
  """,
  customRender: {
    "table": (context, child) => SingleChildScrollView(
      scrollDirection: Axis.horizontal,
      child: Table(
        border: TableBorder.all(),
        children: context.tree.children.map((e) => _buildRow(e)).toList(),
      ),
    ),
  },
)

关键点:

  • 使用 SingleChildScrollView 处理表格横向滚动
  • 通过 Table Widget 实现原生表格布局
  • 支持表头/单元格样式自定义
  • 需要导入 package:html/dom.dart 处理 DOM 节点

这样可以实现基本的 HTML 表格渲染,如需更复杂功能可进一步扩展 customRender 逻辑。

回到顶部