【Flutter混编】InAppWebView常见配置&相册问题处理-程序员宅基地

技术标签: webview  flutter  Flutter开发  java  android  移动开发  

 

Flutter自带WebView不想说啥了,就这样吧。

反正一番周折之后选择使用第三方的InAppWebView。看源码可以看出本质上是用了Platform调回原生平台的webview,但是性能就是比自己写的要好。

常见配置

1. InAppWebView.initialOptions

最基本的配置。InAppWebViewGroupOptions里面有三种,我这边用到crossPlatform和android

crossPlatform: InAppWebViewOptions(
 useShouldOverrideUrlLoading: true,
 applicationNameForUserAgent: AppConfigureManager().androidUserAgent,
),
android: AndroidInAppWebViewOptions(
 useHybridComposition: true,
),

useShouldOverrideUrlLoading就是启用shouldOverrideUrlLoading的回调,具体作用百度applicationNameForUserAgent在已有的UserAgent后面直接拼信息,这样就不需要在后续时机取已有UA再做拼接了

useHybridComposition等于使用Flutter自带WebView时的

if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();

反正就带上就是了,忘了不带会出啥问题了

2. InAppWebView.gestureRecognizers

手势识别,根据注释(Flutter的WebView也有的字段),如果不添加会只能响应点击事件。实践下来的话的确如此。因为我们的WebView放在了一个可以左右滑的视图里,如果不捕捉垂直滑动手势会导致WebView自身很难响应到上下滑手势。

gestureRecognizers: [
 Factory(() => VerticalDragGestureRecognizer()),
].toSet(),

3. InAppWebView.onWebViewCreated

onWebViewCreated: (InAppWebViewController controller) async{
 _webViewControllerAndroid = controller;
 _webViewControllerAndroid..addJavaScriptHandler(handlerName: 'flutter_bridge', callback: (args) async{
  List<String> inArgs = [];
  for(var tmp in args.first) {
   if(tmp is String) {
    inArgs.add(tmp);
   }
   else {
    inArgs.add('');
   }
  }
  NativePageJumpChannel tmp= await NativePageJumpChannel().webViewBridge(inArgs);
  if((tmp.callbackStr??'').length > 0)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_32792839/article/details/117511243

智能推荐

ESP32 LVGL8.1 实现太空人显示(29)_lv_img_declare-程序员宅基地

文章浏览阅读8.7k次,点赞11次,收藏90次。文章目录一、ESP32 LVGL工程配置1.1从库中下载LVGL代码1.2配置适合ESP32 液晶屏1.3编译下载测试二、GIF图片处理2.1下载gif图片2.2将gif图片按照帧率导出成图片2.lvgl animimg对象实现图片的播放1.3下载测试 注:本博客作为学习笔记,有错误的地方希望指正一、ESP32 LVGL工程配置首先要通过液晶屏显示太空人,我们这里主要有两种方式可以实现,第一种直接使用厂家只带的液晶屏幕驱动去实现图片的显示,另外使用其他的GUI提供的控件去实现,嵌入式常见的GUI挺多_lv_img_declare

最小权顶点覆盖问题-程序员宅基地

文章浏览阅读1.5w次,点赞7次,收藏30次。问题描述:给定一个赋权无向图G=(V,E),每个顶点v∈V都有一个权值w(v)。如果UV,且对任意(u,v)∈E有u∈U或v∈U,就称U为图G的一个顶点覆盖。G的最小权顶点覆盖是指G中所含顶点权之和最小的顶点覆盖。问题解决:用优先队列分支限界方法解最小权顶点覆盖,在算法的搜索的进程中保存当前已构造出的部分解空间树,在算法搜索达到叶节点时,其最优值对应的最优解同时保存下来。优先队列的优先_最小权顶点覆盖

matlab如何导入map,matlab添加M_map工具箱-程序员宅基地

文章浏览阅读517次。首先试了matlab自带的worldmap,感觉画出来的图形不尽如人意,比较杂乱。如下图。查阅了些资料,请教了Liangjing,一致推荐m_map。为了达到想要的效果,这次只要不再偷懒,下载M-Map工具箱(http://www.eos.ubc.ca/~rich/map.html)并进行安装。所幸过程比较顺利,现记录如下,回头把画出的效果图再添上。其他matlab的toolbox安装,也可参考进..._mmap工具包如何安装

iOS学习:iOS代码规范_ios replaceobjectsinrange-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏5次。作者感言阅读前言iOS代码规范Import规范Define规范Paragma Mark 规范Interface规范implementation规范实例规范NSDictionary规范NSArray规范函数规范If-Else规范For-In For 规范Block规范运算符规范命名规范实例命名规范Property命名规范Interface-class命名规范B_ios replaceobjectsinrange

python 将列表中的字符串转为数字格式,以及pandas Series或index转换为Numpy数组_pandas index存入数组-程序员宅基地

文章浏览阅读1.7w次,点赞7次,收藏39次。本文实例讲述了Python中列表元素转为数字的方法分享给大家供大家参考,具体如下:1.首先可以用循环来解决(直接粗暴)举个栗子:<1>有一个数字字符的列表:numbers = ['2', '5', '130', '8']`<2>想要把每个元素转换为数字:numbers = [2, 5, 130, 8]用一个循环来解决:new_numbers = [];..._pandas index存入数组

PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)_mysql 数据库查出的字符串导出excel转码-程序员宅基地

文章浏览阅读7.5k次。有时候直接用php导出excel会有乱码或者中文变成问号出现,这时候肯定就是编码的问题了。 前 后 前 后 环境MySQL 5.0 数据库 utf8_general_ci 编码PHP UTF8 编码需要注意的问题1. 从数据库读取出来的数据是否乱码? mysql_query( "SET NAMES 'u_mysql 数据库查出的字符串导出excel转码

随便推点

maven 依赖文件 pom.xml 编译 mvn compile 运行 不用mvn exec:java -Dexec.mainClass="hello.HelloWorld"...-程序员宅基地

文章浏览阅读289次。使用maven编译Java项目http://blog.csdn.net/yaya1943/article/details/48464371使用"mvn clean"命令清除编译结果,也就是把编译生成的target文件夹删掉如果你想安装您的项目的JAR文件到本地Maven仓库,那么你应该调用下面语句:mvn install此时,你的项目代码将会经过编译、测试、打..._maven 编译不使用本地依赖包

巧用ChatGPT快速提高职场晋升力、搞定数据分析玩、转新媒体运营-程序员宅基地

文章浏览阅读7.6k次,点赞147次,收藏134次。在日常工作中巧用ChatGPT可以帮助我们提高工作效率、创造价值并降低成本。通过合理地利用ChatGPT的功能和应用场景,企业和个人可以更好地实现工作目标、提升竞争力并取得更大的成功。随着人工智能技术的不断进步和发展我们相信巧用ChatGPT将成为未来工作中的一种常态化工具为我们的职业生涯和生活带来更多便利和价值。本书是一本关于数据分析与ChatGPT应用的实用指南,旨在帮助读者了解数据分析的基础知识及利用ChatGPT进行高效的数据处理和分析。_巧用chatgpt快速提高职场晋升力

vscode同步git代码时源代码管理出现10k+更改如何处理?_git init 代码有 10k+ 更新-程序员宅基地

文章浏览阅读2.7k次。vscode出现10k+更改需要处理_git init 代码有 10k+ 更新

机器学习算法之K-means(K均值聚类)算法_k-means聚类算法的anchors_num的最大值-程序员宅基地

文章浏览阅读6.1k次,点赞5次,收藏124次。聚类聚类,简单来说,就是将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好。它是一种无监督的学习(Unsupervised Learning)方法,不需要预先标注好的训练集。聚类与分类最大的区别就是分类的目标事先已知,例如猫狗识别,你在分类之前已经预先知道要将它分为猫、狗两个种类;而在你聚类之前,你对你的目标是未知的,同样以动物为例,对于一个动物集来..._k-means聚类算法的anchors_num的最大值

edu教育邮箱免费申请注册Google drive无限网盘和微软OneDrive经验分享_onedrive a5-程序员宅基地

文章浏览阅读1.6w次,点赞2次,收藏15次。前言介绍很多萌新小白初涉国外云盘对Google云盘和微软OneDrive云盘到底容量有多大、数据隐私是否安全、自己免费申请白嫖的账户可用多久都没有清晰准确的认识和了解,又加上网上博客文章大多都是很多年前的方法和政策,完全给不了网友实质上的建议,本文来帮大家屡屡头绪。产品认识Google DriveGoogle Drive云端硬盘提供了15G 的免费容量,对于一般文档是够用了。Google drive唯一的好处就说分享资源超级方便,共享也很容易。Google 照片提供不限容量的照片存储_onedrive a5

把平板、手机作为电脑第二屏幕(Linux系统下)_平板副屏linux-程序员宅基地

文章浏览阅读1.5w次,点赞18次,收藏69次。将平板、手机作为电脑第二屏幕(Linux系统下)背景把手机、平板作为电脑第二屏幕是上个学期偶然想到的,那时我一边看网上的教程一边码代码。由于看的是视频教程,缩小了就看不清上面的字,放大了又会挡住打字区域。这时就想如果有个第二屏幕就很方便了,买个屏幕又不太方便,想到自己还有个平板天天吃灰,这不是就是现成的屏幕嘛。在网上搜了搜发现真的有解决方案,windows和mac上有很多软件可以用,但我平时..._平板副屏linux

推荐文章

热门文章

相关标签