flutter开发实战-flutter web加载html及HtmlElementView的使用

flutter开发实战-flutter web加载html及HtmlElementView的web控件

HtmlElementView 是 Flutter 中用于嵌入 HTML 内容的 widget。这个 widget 允许你将一个 HTML 元素嵌入到 Flutter 应用中。

一、HtmlElementView基本使用

在工程的pubspec.yaml中引入插件

复制代码
HtmlElementView(
          viewType: 'my-html-element-view-type',
        )

其中viewType 是一个字符串,它告诉 Flutter 和宿主环境如何识别和嵌入的 HTML 元素。

要注意的是,HtmlElementView 目前只能在 Web 平台上工作,也就是说它只能在 Flutter 的 Web 应用中使用。在移动设备或桌面应用中是无法使用的。

二、ui.platformViewRegistry

使用HtmlElementView的同时,我们需要使用ui.platformViewRegistry来传入html的元素。HtmlElement()是基类,可以更加需要传入IFrameElement、HtmlHtmlElement、MediaElement、BodyElement等等元素。

需要注意的是HtmlElementView的viewType与registerViewFactory需要保持一致

  • 加载URL IFrameElement

    ui.platformViewRegistry.registerViewFactory('html-viewType',
    (int viewId) => IFrameElement()
    ..style.border = 'none'
    ..src = 'https://www.baidu.com');

加载URL需要http或者https这scheme,请写全。

  • 加载Assets中HTML IFrameElement

    ui.platformViewRegistry.registerViewFactory('html-viewType',
    (int viewId) => IFrameElement()
    ..style.border = 'none'
    ..src = '/assets/test2.html');

  • 加载Html字符串 HtmlHtmlElement

    ui.platformViewRegistry.registerViewFactory('html-viewType',
    (int viewId) => HtmlHtmlElement()
    ..style.border = 'none'
    ..setInnerHtml(html));

使用HtmlHtmlElement可以加载篇幅较短的html字符串。

  • 加载图片 ImageElement

    ui.platformViewRegistry.registerViewFactory('html-viewType',
    (viewId) => ImageElement()
    ..src = 'https://example.com/image.png'
    ..style.width = '100px'
    ..style.height = '100px',);

使用ui.platformViewRegistry.registerViewFactory可能会报错。需要引入dart.html

三、使用flutter build web

使用命令进行打包

复制代码
flutter build web --web-renderer html

四、小结

flutter开发实战-flutter web加载html及HtmlElementView的web控件

学习记录,每天不停进步。

相关推荐
程序员老刘1 天前
跨平台开发地图 | 2026年6月
flutter·ai编程·客户端
悟空瞎说2 天前
Flutter 架构详解:新手必懂底层原理
flutter
SoaringHeart2 天前
Flutter最佳实践:IM聊天文字链接自动识别跳转
前端·flutter
恋猫de小郭2 天前
KMP / CMP 鸿蒙版本 Beta 发布,他有什么特别之处?
android·前端·flutter
风华圆舞3 天前
Flutter + 鸿蒙 Intents Kit:页面直达能力的完整接入方案
flutter·ui·华为·harmonyos
韩曙亮3 天前
【Flutter】Flutter 组件 ④ ( 组件渲染 的 三棵树理论 | Widget 树 → Element 树 → RenderObject 树 )
flutter·element·widget·renderobject
恋猫de小郭3 天前
Android 17 正式版发布,全新 AI 和各种破坏性更新
android·前端·flutter
kingbal3 天前
Windows:flutter环境搭建
windows·flutter
911hzh3 天前
Flutter MethodChannel 跨端通信框架 zh_native_channel:快速入门、优势分析与 Pigeon 对比
flutter
911hzh3 天前
Flutter 快速搭建新项目:用 Flutter Foundation Kit 一条命令生成带基础架构的 App 模板
flutter