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ǔ)篇:
- 谷歌Flutter1.0正式版發(fā)布
- Flutter基礎(chǔ)篇(1)-- 跨平臺開發(fā)框架和工具集錦
- Flutter基礎(chǔ)篇(2)-- 老司機(jī)用一篇博客帶你快速熟悉Dart語法
- Flutter基礎(chǔ)篇(3)-- Flutter基礎(chǔ)全面詳解
- Flutter基礎(chǔ)篇(4)-- Flutter填坑全面總結(jié)
- Flutter基礎(chǔ)篇(5)-- Flutter代碼模板,解放雙手,提高開發(fā)效率必備
- Flutter基礎(chǔ)篇(6)-- 水平和垂直布局詳解
- Flutter基礎(chǔ)篇(7)-- Flutter更新錯誤全面解決方案(圖文+視頻講解)
- Flutter基礎(chǔ)篇(8)-- Flutter for Web詳細(xì)介紹
- Flutter基礎(chǔ)篇(9)-- 手把手教你用Flutter實(shí)現(xiàn)Web頁面編寫
- Flutter1.9升級體驗(yàn)總結(jié)(Flutter Web 1.9最新版本填坑指南)
Flutter進(jìn)階篇:
- Flutter進(jìn)階篇(1)-- 手把手帶你快速上手調(diào)試Flutter項(xiàng)目
- Flutter進(jìn)階篇(2)-- Flutter路由詳解
- Flutter進(jìn)階篇(3)-- Flutter 的手勢(GestureDetector)分析詳解
- Flutter進(jìn)階篇(4)-- Flutter的Future異步詳解
- Flutter進(jìn)階篇(5)-- 使用Flutter創(chuàng)建插件詳解并發(fā)布到Pub庫
- Flutter進(jìn)階篇(6)-- PageStorageKey、PageStorageBucket和PageStorage使用詳解
- Flutter進(jìn)階篇(7)-- Flutter路由輕量級框架FRouter
Dart語法系列博文鏈接 ↓:
Dart語法基礎(chǔ)篇:
Dart語法進(jìn)階篇:
一、創(chuàng)建插件
在這里以調(diào)用原生平臺設(shè)備信息為例做講解。手把手教大家寫一個Flutter插件。
(1)首先看看Flutter調(diào)用原生平臺交互過程
Flutter中通過MethodChannel和原生平臺做交互。如圖所示:

(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)
如下圖所示:

其中:
- “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)識符,必須記住。如下所示: