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 是怎麼引進來的

 

那麼這時候請你查看一下settings.gradle. 

 

發現了嗎 這裏作了遍歷 然後 include。這裏include 是因爲 我們如果想把別的project 的moudle 引入做依賴就要在settings 中進行include 然後要指定該project 的路徑

到這裏我們在flutter 中 引入的第三方pub 。如何將他們的原生代碼引進來的做了一下簡單的分析 如有其他問題 歡迎交流指正 

工作之餘做了一個簡單的flutter 版的 demo  以後有什麼新的想法也會寫進去,如果你正在學習flutter 可以作爲參考

這時效果圖

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章