Flutter進(jìn)階篇(5)-- 使用Flutter創(chuàng)建插件詳解并發(fā)布到Pub庫

Flutter提供了和原生做交互的方式,我們通過和原生交互就可以達(dá)到Flutter調(diào)用原生平臺的相關(guān)功能的目的。換句話說,F(xiàn)lutter做不到的事(比如:設(shè)備有關(guān)的、第三方SDK、長連接等),我們都可以通過Flutter與原生交互來做到,其中插件的編寫是必不可少的一個過程。我們一定要掌握插件的編寫。

有人會說:“網(wǎng)上不是有很多插件庫嗎?”沒錯!但是如果別人寫的插件功能沒有你想要的怎么辦?如果插件與你本地不兼容怎么辦?如果你的項(xiàng)目急用一個功能,網(wǎng)上找不到插件庫怎么辦?那么這個時候?qū)W會自己編寫插件庫就非常有必要了!

本文首發(fā)在公眾號Flutter那些事,歡迎大家多多關(guān)注。

下面詳細(xì)的講解一下Flutter如何創(chuàng)建一個插件,并且教大家上傳到Pub庫,讓大家也體驗(yàn)一把自己的庫被別人使用的自豪感。

本文示例源碼同步在Github:https://github.com/AweiLoveAndroid/flutter_device_information,如有任何問題,歡迎提issue


Flutter系列博文鏈接 ↓:

工具安裝:

Flutter基礎(chǔ)篇:

Flutter進(jìn)階篇:

Dart語法系列博文鏈接 ↓:

Dart語法基礎(chǔ)篇:

Dart語法進(jìn)階篇:


一、創(chuàng)建插件

在這里以調(diào)用原生平臺設(shè)備信息為例做講解。手把手教大家寫一個Flutter插件。

(1)首先看看Flutter調(diào)用原生平臺交互過程

Flutter中通過MethodChannel和原生平臺做交互。如圖所示:

Flutter調(diào)用原生平臺交互示意圖

(2)創(chuàng)建Flutter Plugin插件項(xiàng)目

使用Android Studio/Intellij IDEA創(chuàng)建項(xiàng)目,截圖如下:

使用flutter create命令行創(chuàng)建,項(xiàng)目名稱放在最后,命令如下所示:

flutter create --org com.awei --template=plugin -a java --description "A Flutter plugin for using devices informations in Android" flutter_device_information

常用的命令參數(shù)如下:

  • --org:定義項(xiàng)目的組織結(jié)構(gòu)
  • -a:用什么語言編寫Android代碼
  • --description:插件的描述
  • -i:用什么語言編寫iOS代碼

上面那個命令的意思是:創(chuàng)建一個插件,包名為“com.awei”,指定Android代碼使用Java語言編寫,插件項(xiàng)目名稱為“flutter_device_information”,項(xiàng)目描述為:“A Flutter plugin for using devices informations in Android”。

(3)下面看一下完整的目錄結(jié)構(gòu)

如下圖所示:

完整的項(xiàng)目結(jié)構(gòu)圖

其中:

  • “android”目錄是插件API在Android平臺的實(shí)現(xiàn)。
  • “ios”目錄是插件API在iOS平臺的實(shí)現(xiàn)。
  • “example”目錄是使用插件的一個示例項(xiàng)目。
  • “l(fā)ib”目錄的文件,主要是創(chuàng)建“MethodChannel”,然后接收并處理來自原生平臺發(fā)來的消息。

(4)插件編寫步驟

1.創(chuàng)建MethodChannel對象

打開flutter_device_information.dart文件,開始創(chuàng)建MethodChannel對象,參數(shù)是自己協(xié)定的,后面的原生平臺需要用到的這個參數(shù),每一個MethodChannel對象的這個參數(shù)是唯一的標(biāo)識符,必須記住。如下所示:

還有 55% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
支付 ¥5.00 繼續(xù)閱讀

友情鏈接更多精彩內(nèi)容