首页 > 应用开发 > IT综合 > 婚恋交友源码,实现一个插件的透明背景
我之所以写这篇婚恋交友源码修改透明背景的文章,是因为我改的是Flutter官方的插件webview_flutter。Flutter官方的插件,全部是在一个 上维护的,各个库之间又相互关联。【见下图】
所以改婚恋交友源码功能其实是其次,如何在这庞大的Flutter插件库里面单独修改你所需的插件,并且自行维护起来,这才是重点!!!我觉得是很有必要分享给大家的。
这次改动的原因是Flutter webview的背景永远是白色,而婚恋交友源码的主题又是黑色的。这样H5嵌入的时候,需要H5的同事去设置黑色背景,同时 网页还没加载出来时还会出现白色背景,体验极差。 如果能把webview的背景设置为透明,H5不需要设置背景色,从可维护性和体验都会有所提高,因此需求应运而生。
2. 更改主插件依赖项
进入主插件webview目录,看到yaml依赖的还是pub上面的插件,所以我们改动其他目录下的源码,yaml根本就没有依赖到,是不会生效的。
所以我要先把yaml的依赖改为相对路径,这样我们对代码的改动才会生效。改完flutter pub get,跟着源码走下去,都能进入本地的源文件,good👍🏻
在webview的build方法中,可以看到 通过WebView.platform.build传入构造的参数,然后判断篇平台返回对应视图。
以婚恋交友源码为例,来到webview_flutter_android的webview_android.dart中。可以看到通过AndroidView引入原生视图,通过标识 'plugins.flutter.io/webview' 进行匹配。
之后进入android目录,找到对应的FlutterWebView文件,通过获取methodcCannel传入的params来判断婚恋交友源码是否需要启用透明背景,如果为true,则设置backgroundColor为透明。
Ps:这里可以看出,原生插件的编写很简单。只要通过methodChannel进行通信,Flutter层传入params,原生层获取参数后进行解析。 注意数据传输都是转为字符串类型的,甚至很多时候都是用json字符串流转。
同时这里也返回了原生视图,通过PlatformView绑定标识,返回对应PlatformViewFactory的视图,标识同样也是字符串类型。
所以是非常傻瓜式的,Flutter只不过提供了一个通信桥梁来实现跨平台,原生代码还是得自己写,从这个角度来看,Flutter真的跨平台了吗?积极开源的社区对于Flutter而已,必要性何其重呢?值得我们深思!
ios端也一样,核心代码就是修改wkWebview的背景色为透明
功能实现完,要考虑如何引入到婚恋交友源码中使用。以往个人开发的插件一般都是通过git仓库引入,所以我创建新的GitHub仓库,把改好的webview目录整个上传上去。加入项目中flutter pub get后惊喜的发现,失败了!
原因是:
根目录下没有yaml文件,对于Flutter来说是一个不合格的Plugin。
所以我们需要指定插件的根目录,通过path来指定到webview文件夹下。
继续get,再次惊喜!!! 原因是:
相对路径 ../XXXX 找不到对应的插件,这合理吗?
很合理,因为Flutter必须保证你的包是最小的,你既然指定了依赖的库,那我就只会下载对应的库,并不是整个git下载下来。所以我们用相对路径的时候,根本找不到根目录下其他的插件。
解决方法,webview的yaml文件中所依赖的插件也需要用git引入
再次get,婚恋交友源码运行起来了,非常完美!👌🏻
这次对于婚恋交友源码插件的更改,其实功能并不难。但是对于Flutter官方插件的更改,以及
如果放到自己的git上进行维护,我认为这次确实让我学到了不少。 赶紧创建一个仓库,按照上面的方式,组建内部插件库之旅吧!
声明:本文由云豹科技转发自Karl_wei博客,如有侵权请联系作者删除
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982461/viewspace-2841368/ ,如需转载,请注明出处,否则将追究法律责任。