Flutter 中关于plugin引入的一些事儿

       flutter 中plugin开发与发布流程 这里不做说明,想了解的可以看看其他人的博客。这里主要是想分析一下 plugin 中原生代码是如何被我们引进来的(仅限android 这部分)最近也是初学 不明白原生的代码我们怎么引进来的。

       首先我们在pubspec.yaml 中引入了xxx:1.0.1 的库 我们使用 pub get  下载这个库 。我们就可以在dart 中使用该库封装好的控件 或者api 了。 如果这个库有与原生交互的功能那么它内部一定是写了一个plugin 内部注册了methodchannel 等等 与flutter 交互使用。 那么你引入这个库 之后 你的android 代码里一定会生成一个 类   这里以permissionhandler 项目为例

 
            

这里看到它会生成这些代码 用来干什么 。注册这个库的插件 只有在我们的项目中注册了 才能使用这个插件 ,注册的地方在哪呢。就在你android 项目的 activity中 调用 

这样该库的插件才能生效  但是我们发现 在GeneratedPluginRegistrant。中 调用了  PermissonHandlerPlugin 的方法。如果你是在 flutter 项目中打开 你会发现会爆红 找不到这个类 。需要你打开android 项目 然后会自动下载相关的代码。 如果你打开android 项目你会发现你的项目里多了一个moudle。

 

然后在这里你发现了 这个类 那么你查看一下build.gradle. 你会发现并没有 依赖这个moudle 那么这个moudle 是怎么引进来的

扫描二维码关注公众号,回复: 11355491 查看本文章

那么这时候请你查看一下settings.gradle. 

发现了吗 这里作了遍历 然后 include。这里include 是因为 我们如果想把别的project 的moudle 引入做依赖就要在settings 中进行include 然后要指定该project 的路径

到这里我们在flutter 中 引入的第三方pub 。如何将他们的原生代码引进来的做了一下简单的分析 如有其他问题 欢迎交流指正 我也是初学 欢迎讨论交流。

工作之余做了一个简单的flutter 版的 demo  以后有什么新的想法也会写进去,如果你正在学习flutter 可以作为参考

github 地址 https://github.com/869225586/flutter_news

猜你喜欢

转载自blog.csdn.net/ImTryCatchException/article/details/106918811