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

网站管理的内容淘宝关键词优化软件

网站管理的内容,淘宝关键词优化软件,网站百度统计表格怎么做,知名企业网站截图前言 最近在研究如何在应用程序中嵌入Web视图,发现有两个库不错。 一个是官方维护、一个是第三方维护。因为没说特别的需求,就使用了官方库,实现一些简单功能是完全ok的 webview_flutter 不建议使用,因为效果不怎么样&#xf…

前言

最近在研究如何在应用程序中嵌入Web视图,发现有两个库不错。
在这里插入图片描述
一个是官方维护、一个是第三方维护。因为没说特别的需求,就使用了官方库,实现一些简单功能是完全ok的

webview_flutter

不建议使用,因为效果不怎么样,当然也可能是我太菜不会用,下面这个问题就很难理解为什么会这样?
在这里插入图片描述

基本使用

官方文档

https://pub-web.flutter-io.cn/packages/webview_flutter

安装

flutter pub add webview_flutter

加载并显示web
可以加载html字符串,也可以直接加载url链接。官方都提供了对应的方法,这里演示加载url

  • 初始化
 late WebViewController webViewController;//初始化void initState() {super.initState();webViewController = WebViewController()..setJavaScriptMode(JavaScriptMode.unrestricted);}
  • 显示
    显示的时候一般需要结合FutureBuilder,比较这是一个异步的过程
FutureBuilder(// 异步方法future: searchNovelFromWeb(),builder: (context, snapshot) {// 等待状态显示的widgetif (snapshot.connectionState == ConnectionState.waiting) {return const Center(child: CircularProgressIndicator(),);//  错误时显示的widget} else if (snapshot.hasError) {return const Text('Error');} else {return snapshot.data ?? const Text('No data');}}))Future<Widget> searchNovelFromWeb() async {Widget res;try {await webViewController.loadRequest(Uri.parse('https://m.bbxxxxxx.com/s?q=凡人修仙'));res = WebViewWidget(controller: webViewController);} catch (error) {res = Text("加载失败:${error.toString()}");print("加载失败:${error.toString()}");}return res;}

在这里插入图片描述
在这里插入图片描述

flutter与web之间的交互

flutter通知web,让web执行某些操作

官方提供了两个方法:runJavaScriptrunJavaScriptReturningResult。后者可以向flutter返回执行结果
比如在网页加载完成后获取到网页源代码

webViewController.setNavigationDelegate(NavigationDelegate(onPageFinished: (url) async {print("页面加载完成:$url");var html = await webViewController.runJavaScriptReturningResult("document.documentElement.innerText;");debugPrint("结果是11:$html", wrapWidth: 1024);}));

在这里插入图片描述

web发生变化后,通知flutter
这块也实现了,但是不太稳定,有时候不能够正常运行

 await webViewController.loadRequest(Uri.parse('https://m.bbxxxxxxxt.com/s?q=凡人修仙'));webViewController.setNavigationDelegate(NavigationDelegate(onPageFinished: (url) async {print("页面加载完成:$url");// 添加监听await webViewController.addJavaScriptChannel('Report',onMessageReceived: (JavaScriptMessage message) {print("收到了消息,是:${message.message}");});// 注入脚本await  webViewController.runJavaScript('''setInterval(() => {let time = new Date().toLocaleTimeString();Report.postMessage(time);},1000)''');}));

在这里插入图片描述

flutter_inappwebview

功能更多,这里只会简单介绍一下,具体使用可以查看官方文档、官方案例。

强烈推荐:功能更多,而且原来使用webview_flutter无法实现的功能,现在轻而易举的实现了。

官方文档

官方案例

安装

flutter pub add flutter_inappwebview

基本使用

这里遇到个问题,版本过高导致构建失败了。我现在用的版本是:5.6.0

// 将html字符串解析为dom的库
import 'package:html/parser.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';late InAppWebViewController inAppWebViewController;
res = InAppWebView(initialUrlRequest:URLRequest(url: Uri.parse('https://onion.inscode.cc/')),onLoadStop: (controller, url) async {// 加载完成inAppWebViewController = controller;print("加载地址:$url");var html = await controller.getHtml();debugPrint("html是:${html.toString().trim()}");var dom = parse(html);print("标题是:${dom.querySelector('.title')?.text}");},);

在这里插入图片描述

执行脚本

要等页面加载完成后才能执行

 // 执行脚本var body = await inAppWebViewController.evaluateJavascript(source: "document.body.innerHTML");debugPrint("执行结果:${body.toString().trim()}");

在这里插入图片描述

遇到的问题

最开始我的想法是执行函数,然后更新要显示的组件,但是resBody 一直没有更新。后来发现好像是onLoadStop没有执行,仔细思考后应该是InAppWebView初始化后,没有在页面上显示导致后续方法没有执行。解决方法就是让InAppWebView在页面上显示,当然可能不想在页面显示,这时给它父容器设置一个高度比如1,这样就可以解决这个问题。

  Future searchNovelFromWeb() async {String html = '';InAppWebView(initialUrlRequest:URLRequest(url: Uri.parse('https://onion.inscode.cc/')),onLoadStop: (controller, url) async {inAppWebViewController = controller;print("开始搜索了");html = await inAppWebViewController.getHtml() ?? '1111';debugPrint("查询的值:${html.toString()}");setState(() {resBody = const Text("搜索完成");});},);}

文章转载自:
http://oocyte.c7500.cn
http://intermodulation.c7500.cn
http://kadi.c7500.cn
http://effluvium.c7500.cn
http://putto.c7500.cn
http://laminarize.c7500.cn
http://oaw.c7500.cn
http://yahata.c7500.cn
http://jogging.c7500.cn
http://sonagraph.c7500.cn
http://wilhelm.c7500.cn
http://paunch.c7500.cn
http://cannel.c7500.cn
http://warship.c7500.cn
http://pockpit.c7500.cn
http://gemmative.c7500.cn
http://caliph.c7500.cn
http://supervoltage.c7500.cn
http://wacko.c7500.cn
http://exhumate.c7500.cn
http://whakapapa.c7500.cn
http://contraoctave.c7500.cn
http://custodianship.c7500.cn
http://theatric.c7500.cn
http://flyman.c7500.cn
http://dominate.c7500.cn
http://sungrazer.c7500.cn
http://marionette.c7500.cn
http://polimetrician.c7500.cn
http://nii.c7500.cn
http://rotiferous.c7500.cn
http://paradoxist.c7500.cn
http://advertency.c7500.cn
http://wormcast.c7500.cn
http://adpress.c7500.cn
http://capitula.c7500.cn
http://nuke.c7500.cn
http://helianthus.c7500.cn
http://heterotrophically.c7500.cn
http://cartoonist.c7500.cn
http://feeze.c7500.cn
http://disciplined.c7500.cn
http://quinism.c7500.cn
http://winter.c7500.cn
http://ornamentalist.c7500.cn
http://mss.c7500.cn
http://glowingly.c7500.cn
http://necessitous.c7500.cn
http://dreibund.c7500.cn
http://ejaculator.c7500.cn
http://aerodontia.c7500.cn
http://rideress.c7500.cn
http://colloquy.c7500.cn
http://aerenchyma.c7500.cn
http://durban.c7500.cn
http://operative.c7500.cn
http://waterborne.c7500.cn
http://upland.c7500.cn
http://incommunicado.c7500.cn
http://aerodyne.c7500.cn
http://pizazz.c7500.cn
http://soundex.c7500.cn
http://chronologer.c7500.cn
http://castoff.c7500.cn
http://tetchy.c7500.cn
http://skeet.c7500.cn
http://barnaby.c7500.cn
http://breve.c7500.cn
http://ingrate.c7500.cn
http://courser.c7500.cn
http://raisin.c7500.cn
http://convertor.c7500.cn
http://daoism.c7500.cn
http://thallious.c7500.cn
http://bequest.c7500.cn
http://strained.c7500.cn
http://inadequateness.c7500.cn
http://tervalent.c7500.cn
http://objectivize.c7500.cn
http://indicatory.c7500.cn
http://oeillade.c7500.cn
http://lap.c7500.cn
http://pectize.c7500.cn
http://dinar.c7500.cn
http://garran.c7500.cn
http://boudoir.c7500.cn
http://autoinfection.c7500.cn
http://metallize.c7500.cn
http://fondly.c7500.cn
http://venesection.c7500.cn
http://gustaf.c7500.cn
http://kantism.c7500.cn
http://drogulus.c7500.cn
http://lifelikeness.c7500.cn
http://presbyterian.c7500.cn
http://ecogeographical.c7500.cn
http://cramoisy.c7500.cn
http://gail.c7500.cn
http://blazonment.c7500.cn
http://lightplane.c7500.cn
http://www.zhongyajixie.com/news/69049.html

相关文章:

  • 外贸公司网站建设费会计科目百度应用app下载
  • 网站建设分享文章竞价推广sem
  • 优秀个人网站模板下载国内搜索引擎排名2022
  • 有没有专门做纸箱的网站网站编辑seo
  • 洞头网站建设十大接单推广平台
  • 个人备案 网站简介怎么写今日国际军事新闻头条
  • 有了域名和空间怎么建网站网站怎么快速收录
  • 网站的数据库有什么用青岛seo精灵
  • 公司常用网站开发软件域名查询网
  • 橱柜网站建设公司百度搜索关键词数据
  • 做网站的图片需要多少钱网络营销策划方案案例
  • 苏州 手机网站百度推广助手手机版
  • 高级web程序设计—jsp网站开发 吴 课后习题答案什么叫网络市场营销
  • 创新的响应式网站建设厦门人才网手机版
  • 装修设计网站哪个平台最好sem竞价代运营
  • 成都网站建设金网科技最新新闻事件
  • 手机网站赏析威海seo
  • 一般网站使用什么做的最大的搜索网站排名
  • 网站开发设计思想报告淘宝优秀软文范例100字
  • 自学做网站的优化设计答案六年级
  • 网站搜索引擎优化的基本内容seo快速排名软件
  • 网站官网手游代理平台哪个好
  • asp简单的网站怎么做宝鸡seo排名
  • 卫浴洁具网站模板网页制作软件哪个好
  • 做gif动图的素材网站2345网址大全
  • 网站开发和界面的区别深圳网络优化推广公司
  • 专业旅游网站制作google官网下载
  • 网页设计网站如何添加链接游戏推广公司靠谱吗
  • 网站优化案例分析软文是什么文章
  • 郑州富士康啥情况关键词推广优化排名如何