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控件

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

相关推荐
irislinAmelia2 小时前
缺陷检测AI关键点在哪
人工智能·嵌入式硬件·1024程序员节
Ai-_Man2 小时前
Meta Muse还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·c#·1024程序员节
梓豪csd2 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
王中阳Go2 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
Yang96112 小时前
0.8米超短盲区,解析BM-T1如何服务矿石能源光缆测试
1024程序员节
BK贝壳2 小时前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
by209992 小时前
Linux 基础指令与文件操作
linux·1024程序员节
老徐聊GEO2 小时前
长尾问法召回对比实验(2026):全国大词与“南京+行业“问法的差异测量
1024程序员节·geo优化
优橙教育2 小时前
AI Agent开发是什么,和接个聊天框有什么区别
1024程序员节
宝绿特塑业再生科技2 小时前
改性HDPE再生颗粒在户外家具挤出发泡板材中的色差控制与高品质价值重构
经验分享·科技·学习·生活·1024程序员节·户外家具