Flutter外掛iOS端開發教程

浮生zZZ發表於2020-02-26

學習flutter沒多久,因為新的需求涉及到原生,所以需要製作外掛,學習的過程中詳細記錄一下,本篇部落格主要介紹的是iOS端詳細步驟,不涉及Android

原理

個人理解,這種與原生通訊的設計模式都差不多,flutter這邊的叫Method Channel。跟之前搞的Cordova很像,都有一個plugin類來處理與原生的通訊。 深入理解推薦閱讀Flutter與iOS通訊原理

步驟

建立外掛工程

  1. Android Studio建立
    AS建立外掛工程
    點選Next,修改Project名字繼續Next,
    建立外掛設定
    紅框部分選擇是否支援SwiftKotlin
  2. 終端建立
    flutter create --org com.example --template=plugin 外掛名字
複製程式碼

如果需要支援Swift或者Kotlin

flutter create --template=plugin -i swift -a kotlin 外掛名字

複製程式碼

到這裡,外掛工程就已經建立好了。

目錄結構

外掛工程目錄
android:安卓外掛程式碼新增的地方 example:外掛示例工程 ios:iOS原生程式碼新增的地方 lib:外掛的Dart程式碼

flutter與原生通訊

Dart呼叫原生外掛的地方:

Dart呼叫原生
原生接收呼叫的外掛類:
原生接收通訊
通過method來區分不通的方法呼叫,傳參在arguments中
FlutterMethodCall

編寫iOS原生程式碼

首先需要在example工程下,執行fLutter build ios,主要是需要pod install,生成xxx.workspace. 然後如下圖所示開啟Xcode,

使用Xcode開啟工程
使用example目錄下的ios目錄開啟也一樣。 Xcode工程開啟後,在如下圖所示位置新增編寫原生程式碼。
新增iOS程式碼的位置

新增檔案或者本地庫

新增檔案
同時在podsepc檔案裡面加上:

  s.source_files = 'Classes/**/*'
  s.public_header_files = 'Classes/**/*.h'
  # 第三方.a檔案
  s.vendored_libraries = 'Classes/**/*.a'
  # 第三方framework
  s.vendored_frameworks = 'Classes/**/*.framework'
  s.dependency 'Flutter'
複製程式碼

podspec檔案
更加詳細的podspec檔案語法,請戳podspec檔案語法

遇到的問題

執行example工程師,一直報library not found,這個問題還不是一直有,有時候報錯有時候不報錯,尤其Xcode能執行開啟Android Studio執行就顯示找不到庫檔案。搞了好久,請教了很多人,最後發現是Android Studio不能識別大寫Lib開頭的.a檔案,一定要小寫。

相關文章