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

升级flutter_html至3.0.0-beta.2后EdgeInsets适配Margins/HtmlPaddings问题

解决flutter_html 3.0.0-beta.2中Margin/Padding无法使用EdgeInsets的问题

flutter_html 3.0.0-beta.2版本重构了margin和padding的API,原来的EdgeInsets类型不再兼容,需要改用框架自定义的Margins和HtmlPaddings类,每个方向的间距值需要用对应的Margin或HtmlPadding对象包裹。

正确代码示例

修改你原有的Style配置部分:

class HTMLContent extends StatelessWidget {
  final String htmlCode;

  HTMLContent({required this.htmlCode});

  @override
  Widget build(BuildContext context) {
    return Html(
      data: htmlCode,
      style: {
        "p": Style(
          color: Theme.of(context).primaryColor,
          fontSize: pFontSize,
          fontFamily: 'Lato',
          textAlign: TextAlign.justify,
          // 替换原 EdgeInsets.only(bottom: 10.0)
          margin: const Margins(bottom: Margin(10.0)),
          lineHeight: const LineHeight(1.3),
        ),
        "th": Style(
          // 替换原 EdgeInsets.all(6)
          padding: const HtmlPaddings.all(HtmlPadding(6)),
          backgroundColor: Theme.of(context).primaryColorLight,
          color: Colors.white,
          fontFamily: 'Lato',
          fontSize: const FontSize(16),
        ),
      },
    );
  }
}

其他常用写法

和原EdgeInsets的用法逻辑一致,只需替换为对应类型包裹:

  • 仅设置单方向间距:Margins(top: Margin(8.0))、HtmlPaddings(right: HtmlPadding(12.0))
  • 对称设置水平/垂直间距:Margins.symmetric(vertical: Margin(6.0))、HtmlPaddings.symmetric(horizontal: HtmlPadding(10.0))
  • 四个方向分别设置不同值:Margins(top: Margin(4.0), right: Margin(8.0), bottom: Margin(4.0), left: Margin(8.0))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:52:42