当前位置: 首页 > article >正文

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

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


http://www.kler.cn/a/299521.html

相关文章:

  • 理解神经网络:Brain.js 背后的核心思想
  • Elasticsearch Queries
  • FFmpeg(7.1版本)编译:Ubuntu18.04交叉编译到ARM
  • matlab的.mat文件怎么把表格中的值全部设置为空
  • Autogen_core源码:_agent_runtime.py
  • JVM_类的加载、链接、初始化、卸载、主动使用、被动使用
  • 2024年好用的10款图纸加密软件排行榜|图纸加密的最佳选择
  • 降维打击 华为赢麻了
  • 80-MySQL 原子性实现原理
  • 干耳里的硬屎怎么清理?好用的无线可视挖耳勺推荐
  • 深入探讨生成对抗网络(GANs):颠覆传统的AI创作方式
  • 黑盒测试如何通过侦察转变为白盒
  • 【大模型专栏—入门篇】机器学习与深度学习基础测试
  • R语言统计分析——功效分析1(总述)
  • Qiskit:量子计算的Python工具包
  • 如何看待IBM中国研发部裁员?
  • 浅谈C#之线程锁
  • DevOps平台搭建过程详解--Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台
  • 【数据结构】3——线索二叉树
  • 安卓13系统导航方式分析以及安卓13修改默认方式为手势导航 android13修改导航方式
  • 【H2O2|全栈】关于Photoshop | PS(4)
  • C++,Qt学习 2024.9.10
  • 【无标题】SAM(Segment Anything Model)
  • 信息过载?企业生存战 一张卡片解决所有痛点
  • iOS——atomic、nonatomic、assign、_unsafe_unretain
  • OpenWRT有三个地方设置DNS,究竟设置哪个地方会更好?