學習flutter
沒多久,由於新的需求涉及到原生,因此須要製做插件,學習的過程當中詳細記錄一下,本篇博客主要介紹的是iOS
端詳細步驟,不涉及Android
。android
我的理解,這種與原生通訊的設計模式都差很少,flutter
這邊的叫Method Channel
。跟以前搞的Cordova
很像,都有一個plugin
類來處理與原生的通訊。 深刻理解推薦閱讀Flutter與iOS通訊原理ios
Project
名字繼續Next,
Swift
與Kotlin
。flutter create --org com.example --template=plugin 插件名字
複製代碼
若是須要支持Swift
或者Kotlin
,swift
flutter create --template=plugin -i swift -a kotlin 插件名字
複製代碼
到這裏,插件工程就已經建立好了。設計模式
android
:安卓插件代碼添加的地方
example
:插件示例工程
ios
:iOS原生代碼添加的地方
lib
:插件的Dart代碼
Dart
調用原生插件的地方: bash
首先須要在example
工程下,執行fLutter build ios
,主要是須要pod install
,生成xxx.workspace
. 而後以下圖所示打開Xcode, post
example
目錄下的
ios
目錄打開也同樣。
Xcode
工程打開後,在以下圖所示位置添加編寫原生代碼。
添加文件或者本地庫 學習
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文件語法
運行example工程師,一直報library not found
,這個問題還不是一直有,有時候報錯有時候不報錯,尤爲Xcode能運行打開Android Studio運行就顯示找不到庫文件。搞了很久,請教了不少人,最後發現是Android Studio不能識別大寫Lib開頭的.a文件,必定要小寫。ui