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

flutter web 中嵌入一个html

介绍

flutter web 支持使用 HtmlElementView嵌入html

import 'dart:html';
import 'dart:ui' as ui;
import 'package:flutter/cupertino.dart';class WebWidget extends StatelessWidget {const WebWidget({super.key});@overrideWidget build(BuildContext context) {DivElement frame = DivElement();IFrameElement iframe = IFrameElement()..style.width = '100%'..style.height = '100%'..src = 'https://www.baidu.com'..style.border = 'none';frame.append(iframe);// //设置token// StyleElement sFrame = StyleElement();// String script = """localStorage.setItem('token',token)""";// sFrame.innerHtml = script;// frame.append(sFrame);//ignore: undefined_prefixed_nameui.platformViewRegistry.registerViewFactory('hello-world',(int viewId) => frame);return SizedBox(height: 300,child: HtmlElementView(viewType: "hello-world",),);}
}

遇到的问题:

1. dart.ui找不到platformViewRegistry

ui.platformViewRegistry.registerViewFactory报错

通过2种方案解除报错

1.在代码上方添加注释来接触报错

2.在analysis_options里添加设置忽略该错误(不推荐,影响范围大)

2.dart.html报错

dart.html,IFrame,ScriptFrame都是flutter web下的类,如果要以app的方式运行会报错,运行不起来。

解决方案:条件导包

写一个默认的widget在app环境下导入,HtmlElementView在web环境下导入

导致的问题(带来的影响)

触摸事件被HtmlElementView消费了,导致覆盖在HtmlElementView上层的widget响应不了点击事件,直白一点的说就是覆盖在HtmlElementView的button点击不了

解决方案:

有个pointer_interceptor的库专门就是解决这个问题的pointer_interceptor,用PointerInterceptor包裹有需要响应点击的widget

思路是给需要响应点击的widget包裹一个HtmlElementView,覆盖在本身的那个HtmlElementView,以此来阻隔本身的HtmlElementView的点击事件

引用:

Flutter Web 加载html的填坑记录 - 简书

flutter - html editor enhanced alert dialog not working when the dialog placed on editor - Stack Overflow

http://www.lryc.cn/news/234075.html

相关文章:

  • 使用Spark SQL读取阿里云OSS的数据
  • 【0235】修改私有内存(private memory)中的MyBEEntry时,st_changecount值前后变化
  • Linux学习命令之source
  • 2342. 数位和相等数对的最大和
  • FISCO BCOS 3.0【01】搭建第一个区块链网络
  • UE4动作游戏实例RPG Action解析四:装备系统
  • AIGC之Stable Diffusion
  • PHP接收并处理请求中携带的xml格式的信息
  • 信息安全相关标准
  • Python入门学习篇(一)——注释变量输入输出
  • 基于单片机智能液位水位监测控制系统设计
  • iOS 添加震动效果
  • 合并word中参考文献-(Endnote生成)
  • linux(centos7)常用命令 开启关闭防火墙
  • 数据结构与算法面试题——C++
  • 数字音频工作站FL Studio21.1中文版本如何下载?
  • Linux 无名管道实现文件复制
  • 【机器学习】 逻辑回归算法:原理、精确率、召回率、实例应用(癌症病例预测)
  • 算法萌新闯力扣:存在重复元素II
  • 《洛谷深入浅出基础篇》——P3405 citis and state ——哈希表
  • 在QGIS中加载显示3DTiles数据
  • HBase学习笔记(3)—— HBase整合Phoenix
  • CentOS 7上生成HTTPS证书
  • 解决React遍历每次渲染多个根元素导致无法为元素赋值key的问题
  • 2023年软件安装管家目录最新
  • mac苹果笔记本应用程序在哪?有什么快捷方式吗?
  • py 循环打开多个页面
  • AD教程 (十八)导入常见报错解决办法(unkonw pin及绿色报错等)
  • ubuntu22.04下hadoop3.3.6+hbase2.5.6+phoenix5.1.3开发环境搭建
  • 【随手记】python语言的else语句在for、while等循环语句中的运用