首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在flutter中从flutterWebViewPlugin ( webview )获取html内容

在Flutter中,可以使用flutter_webview_plugin插件来实现WebView功能。要从WebView中获取HTML内容,可以使用flutter_webview_plugin插件提供的方法。

首先,确保已经在项目的pubspec.yaml文件中添加了flutter_webview_plugin插件的依赖:

代码语言:txt
复制
dependencies:
  flutter_webview_plugin: ^0.3.11

然后,在需要使用WebView的页面中,导入flutter_webview_plugin插件:

代码语言:txt
复制
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';

接下来,创建一个WebviewScaffold并加载URL:

代码语言:txt
复制
final flutterWebViewPlugin = FlutterWebviewPlugin();

flutterWebViewPlugin.launch('https://example.com');

要获取WebView中的HTML内容,可以使用flutter_webview_plugin插件提供的evalJavascript方法:

代码语言:txt
复制
flutterWebViewPlugin.evalJavascript('''
  window.document.documentElement.outerHTML;
''').then((html) {
  print(html);
});

上述代码将执行JavaScript代码window.document.documentElement.outerHTML,并将结果作为参数传递给then回调函数。在回调函数中,可以处理获取到的HTML内容,例如打印到控制台。

需要注意的是,为了能够获取到WebView中的HTML内容,确保WebView已经加载完成。可以在WebView加载完成后再执行获取HTML内容的操作,可以使用flutter_webview_plugin插件提供的onStateChanged监听WebView的状态变化:

代码语言:txt
复制
flutterWebViewPlugin.onStateChanged.listen((state) {
  if (state.type == WebViewState.finishLoad) {
    flutterWebViewPlugin.evalJavascript('''
      window.document.documentElement.outerHTML;
    ''').then((html) {
      print(html);
    });
  }
});

上述代码将在WebView加载完成后执行获取HTML内容的操作。

总结起来,要在Flutter中从flutter_webview_plugin获取WebView的HTML内容,可以按照以下步骤进行操作:

  1. 添加flutter_webview_plugin插件的依赖。
  2. 导入flutter_webview_plugin插件。
  3. 创建WebviewScaffold并加载URL。
  4. 使用evalJavascript方法执行JavaScript代码获取HTML内容。
  5. 处理获取到的HTML内容。

推荐的腾讯云相关产品:腾讯云移动浏览器(Tencent Mobile Browser),产品介绍链接地址:https://cloud.tencent.com/product/tmb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flutter 与 iOS 原生 WebView 对比

测试手机:iPhoneX 系统:iOS12.0 加载速度对比 测试网页打开的速度,只需要获取 WebView 在开始加载网页和网页加载完成时的时间戳,时间戳的差即为打开网页的时间。...> UIWebView > flutter_webview 占用内存对比 这里查看内存使用的是 Xcode 的 debug session 的 memory,首先看之前测试时,连续打开十次新浪的内存情况...: 接着我们在看一下打开淘宝首页的内存情况 图上可以看出,WKWebView 在内存方面有很大的优势啊,UIWebView 的内存是真的伤啊,然后 debug 看了一下 flutter_webView...结论:内存 WKWebView > flutter_webview > UIWebView HTML5 兼容性对比 可以在 html5test 对浏览器的兼容性进行评分,通过测试发现得分分别如下: 因为...不过如果多端考虑、以及项目可迁移等,那么使用也未尝不可,就是维护成本要增加一些,需要维护两套 webView。这个就需要根据自己的情况自己取舍了。

1.6K20

FlutterGo 后端知识点提炼:midway+Typescript+mysql(sequelize)

OAuth 的坑 其实,github app 的认证方式非常适用于浏览器环境下,但是在 flutter ,由于我们是新开启的 webView 来请求的 github 登陆地址。...中间脑暴了很多解决办法,最终在查阅 flutter_webview_plugin 的 API 里面找了个好的方法:onUrlChanged 简而言之就是,Flutter 客户端部分新开一个 webView...webView,然后flutter_webview_plugin去监听页面 url 的变化。...功能实现思路 校验收藏 collection表检查用户传入的组件信息,没有则为收藏、有则取出其在 collection 表的 id session 获取用户的 id 用 collection_id...共建说明 由于 Flutter 版本迭代速度较快,产生的内容较多, 而我们人力有限无法更加全面快速的支持Flutter Go的日常维护迭代, 如果您对flutter go的共建感兴趣, 欢迎您来参与本项目的共建

1.2K20

Flutter完整开发实战详解(二十、 Android PlatformView 和键盘问题)

这意味着默认情况下 Flutter UI 永远不会包含 Android Native 的控件,也就是说无法在 Flutter 中集成 WebView 或 MapView 这些常用的控件。...image 如上图所示,简单来说就是原生控件的内容被绘制到内存里,然后 Flutter Engine 通过相对应的 textureId 就可以获取到控件的渲染数据并显示出来。...而 InputConnections(如何在 Android 输入文本)在 unfocused 的 View 通常是会被丢弃。...(IME)的代理,这样 Android 就可以 Flutter View 获取到 InputConnections 然后作用于 AndroidView 上面。...相关的 issue 专题高居不下,并且 webview_flutter 插件的文档所述: 该插件依赖 Flutter 的新机制来嵌入 Android 和 iOS 视图。

13.3K20

Flutterhtml内容加载

上一篇文章Flutter 的下拉刷新和上拉加载,我介绍了如何在Flutter实现下拉刷新和上拉加载的效果,今天我们继续以上文中的代码为例,来介绍如何加载HTML文档内容。...flutter_html这个第三方库适合解析轻量的、不是特别复杂的html文本内容,它仅能够解析常用的那些html标签,所以对于复杂的html内容,我们通常不使用flutter_html,而是使用webView...flutter_inappbrower 前面我们使用flutter_html加载html内容的步骤如下: 首先通过网络请求获取到对应的html内容文本 通过Html这个第三方库的组件来展示html...在Flutter,实现WebView加载html内容的第三方组件有很多,这里我们给推荐flutter_inappbrower这一个第三方组件。...flutter_html可用于加载轻量级的html文本内容,对于复杂的远程html内容,我们需要使用webview来加载,flutter_inappbrower是Flutter实现WebView的最好用的第三方组件

16.6K43

Flutter实现webview与原生组件组合滑动的示例代码

最近在用Flutter写一个新闻客户端, 新闻详情页内容 需要用Flutter的本地Widget和WebView共同展示 ....比如标题/上方的视频播放器是用本地Widget展示, 新闻内容的富文本文字使用webview展示html, 这样就要求标题/视频播放器与webview可以 组合滑动 . ps: 如果把新闻详情页都用html...获取WebView的高度 在android不会有这个破问题, 给 webview 设置 wrap_content 就可以了, 但是在Flutter我没有找到类似布局方式....所以有了思路: 切分html, 分为多个webview共同展示, 然后分别注入JS获取高度 . 注意!注意!...我们的使用场景是: 要展示的内容 = assets存储的html外壳 + 接口获取到的新闻内容段落, 而不是一个url . 以上解决思路仅适用于加载html的场景, 而不是url.

2.8K20

Flutter 2.8 release 发布,快来看看新特性吧

Flutter Web 使用 HtmlElementView Widget 实现了这一点,它允许开发者在 Flutter Web 应用程序托管 HTML 元素。...在之前的版本webview_flutter 的 hybrid composition 模式已经可用,但并不是默认设置。...还增加了一些要求很高的功能: 支持 POST 和 GET 来填充内容(4450、4479、4480、4573) 文件和字符串(4446、4486、4544、4558)加载 HTML 透明背景支持(3431...、3431、4570) 在加载内容之前编写 cookie(4555、4555、4557) 此外在 3.0 版本webview_flutter 为新平台提供了初步支持:web,这个支持允许开发者单个代码库构建...它仅支持简单的 URL 加载,无法控制加载的内容或者和加载的内容交互 有关更多信息,请查看 webview_flutter_web Readme 但是 webview_flutter_web 由于太收欢迎

4.2K20

APP常用跨端技术栈深入分析

:1、UI设计师在进行UI审查时、测试同学在回归测试过程、业务方在使用过程,多少会发现端与端存在着差异,影响用户体验;2、同样的业务、同样的功能在不同的端上,需要每端投入资源去开发实现。...图1-技术栈特点 通过图1,性能、开发语言、渲染、包大小、社区、支持平台等方面梳理了它们的主要特点;不由产生几个问题:为什么原生和Flutter性能更好?...其它性能优化布局加载优化、状态管理优化、启动优化-引擎预加载、内存优化、包大小优化等不再详细介绍。可以多关注Flutter社区,定期升级Flutter版本,会带来很好的收获。...4.3 如何优化APPH5加载慢的问题 图7-加载H5流程介绍 图7描述了WebView初始化到H5页面最终渲染的整个过程,以及和前面H5基本渲染流程进行分析。...耗时环节的主要有两点,一是WebView初始化,可以通过提前初始化WebView优化此问题;二是资源(html、js、css\图片等)的请求连接和加载,可以用H5离线包方案解决此问题,通过资源的预加载,

2.1K10

Hybrid到React-Native: JS在移动端的南征北战史

注:因为不了解Dart,所以本文不对flutter相关内容进行阐述, 实在抱歉 其实写这篇文章的时候,我就知道,肯定有人问我:为什么不写flutter?...一个叫webView.addJavascriptInterface(接口对象,接口名)的方法,调用后,webView控件里面的HTML页面里的JS代码,就可以调用刚才addJavascriptInterface...几种常见的hybrid通信方式 2)JSbridge 我们前端的角度看啊,其实是这样子滴~:就是在Android啊,有这么一个WebChromeClient的组件,它就是上面讲到的WebView控件的一个子类...这个东东还是和上面是一样的,Android的WebChromeClient控件这个类,它有个shouldOverrideUrlLoading这个方法,这个方法可以把控件内部网页的JS的Url请求给拦截了,当然了,你写在Url的数据也同时被一并获取了...1)web view.loadUrl 有了上面的经验你肯定知道,这事还是webview这位老哥来做的,它可以通过调用webview.loadUrl方法加载一个HTML页面,这样HTML的JS脚本不就被调用了吗

3.3K10

Flutter + MVP +Kotlin 实战!

ok,下面切入正题,我们如何在项目中,去使用 Flutter。 疑问 在 Android 原有项目的基础,去集成并使用 Flutter,肯定会有下面几个疑问?...1、如何在原生上,展示 Flutter 界面? 2、原生如何给 Flutter 传送数据?Flutter 如何接收? 3、Flutter 如何调用原生的 method ?通过什么来调用?...4、我们知道在 Flutter ,主入口只有一个 void main(),如果在原生界面 A,要显示一个 ListView。在原生界面 B,要显示一个 webView。...那我们在 Flutter ,通过什么来判断我要加载的是 ListView 还是 webView 呢? 实现 ps:如果电脑前的同学没有安装 Flutter,建议先安装。...这个类的作用,可以简单理解为原生向 Flutter,push data:主动的推送数据。

3.3K00

Fluttter 混合开发下 HybridComposition 和 VirtualDisplay 的实现与未来演进

对于使用过 Flutter 的开发来说,应该对在 Flutter 混合开发,通过 PlatformView 接入原生控件的方式并不陌生,而如果你是 Flutter 1.20 之前就开始使用 Flutter...从一个问题开始 恰巧最近一位朋友在 Flutter 2.10.1 上使用 webview_flutterflutter_pdfview 测试时出现了如下的问题: attachToContext:...因为 Flutter 2.10 开始,官方的 Plugin webview_flutter 默都是使用 hybrid composition 的实现,而第三方的 flutter_pdfview...版本 , 这种实现方式是 通过将 AndroidView 需要渲染的内容绘制到 VirtualDisplays 实现 ,然后在 VirtualDisplay 对应的内存里,绘制的画面就可以通过其...如上图所示,简单来说就是原生控件的内容被绘制到内存里,然后 Flutter Engine 通过相对应的 textureId 就可以获取到控件的渲染数据并显示出来。

1.1K10

干货 | 三种主流快平台技术测评,你更青睐谁?

上面的代码,只是嵌套了1层,实际开发,dom要嵌套好多层,想象那样的代码。。。所以大家都诟病dart是“嵌套地狱”。或者,你可以这么理解,这是一个只有js,没有html和css的浏览器。...开发模式来讲,这确实是一种倒退。浏览器的html提供了tag和样式分离的写法,还有各种各样的选择器,但其实这也是有代价的。...它导致webview初始化时要同时先启动webkit排版引擎来解析这些编写随性的html、css,同时还要启动一个js引擎比如v8或jscore来解析里面的js。...所以解析效率上,Flutter肯定比webview要高。但从编码灵活性上,Flutter写的代码,嗯,难看而低效!...webview、rn/weex、Flutter全部是渲染引擎,webview因为HTML5的发展,还算是多了一些能力比如位置服务、多媒体等。

2.1K20

跨平台解决方案的技术分析

HTML 页面,并在原生应用定义可供 H5 页面访问原生部分能力的接口 JSBridge,从而实现 H5 和 Native 双向通信,也使得 H5 的能力向端侧进一步扩展。...下图描述 WebView 初始化到 H5 页面最终渲染的全过程。...图片来源:Cordova 官网 Cordova 应用程序由几部分组成: Web App 应用程序代码的实现地方,采用的是 Web 技术,应用运行在原生控件 WebView HTML Rendering...综上来看,Web 渲染跨平台方案经历了三个阶段性的发展,原始时期的 h5 + JSBridge + WebView,到 h5 容器的抽象提升,再到目前如火荼的小程序。...,直接底层渲染上实现 UI 的绘制,而 Flutter 就是跨平台、自渲染的代表。

1.1K20

跨平台解决方案的技术分析

HTML 页面,并在原生应用定义可供 H5 页面访问原生部分能力的接口 JSBridge,从而实现 H5 和 Native 双向通信,也使得 H5 的能力向端侧进一步扩展。...下图描述 WebView 初始化到 H5 页面最终渲染的全过程。...图片来源:Cordova 官网 Cordova 应用程序由几部分组成: Web App 应用程序代码的实现地方,采用的是 Web 技术,应用运行在原生控件 WebView HTML Rendering...综上来看,Web 渲染跨平台方案经历了三个阶段性的发展,原始时期的 h5 + JSBridge + WebView,到 h5 容器的抽象提升,再到目前如火荼的小程序。...,直接底层渲染上实现 UI 的绘制,而 Flutter 就是跨平台、自渲染的代表。

1.3K20

Android开发者的Flutter入门(一)

我们都知道跨平台开发还有Hybrid,React Native以及Weex等方案,这些解决方案都是Web开发的角度向Native开发演进,其技术基础都是HTML、CSS和Javascript等Web技术...整个工程源码大家可以Github获取。如有任何问题或建议,欢迎大家提issue。...接下来我们就说说以上这些功能如何在Flutter里实现,先来两张截图感受一下: 新闻列表 新闻详情 新闻源我们使用的是https://newsapi.org。...你只要申请一个apiKey就能从他家获取json格式的头条新闻数据。至于详情的话需要用webview直接打开对应的新闻url。...获取 placeholder: 'images/news_cover.png', ) 总体流程基本上走完了,未涉及到的下拉刷新,最底加载,WebView等技术点 可以戳这里

3.2K10

Flutter使用JsBridge方式处理Webview与H5通信的方法

作为Google推出的跨平台技术方案,Flutter具有诸多的优势,已经或正在被广大开发者应用在移动应用开发。...众所周知,使用Flutter进行项目开发时,就免不了要加载H5页面,在移动开发打开H5页面需要使用WebView组件。...由于加载WebView需要使用网络,所以还需要在android添加网络权限。打开目录android/app/src/main/AndroidManifest.xml,然后添加如下代码即可。...('<p hello world</p '); } </script </body </html 到此这篇关于Flutter使用JsBridge方式处理Webview与H5通信的方法的文章就介绍到这了...,更多相关Flutter Webview与H5通信内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

2.9K10
领券