大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。
学习flutter
没多久,因为新的需求涉及到原生,所以需要制作插件,学习的过程中详细记录一下,本篇博客主要介绍的是iOS
端详细步骤,不涉及Android
。
个人理解,这种与原生通信的设计模式都差不多,flutter
这边的叫Method Channel
。跟之前搞的Cordova
很像,都有一个plugin
类来处理与原生的通信。
深入理解推荐阅读Flutter与iOS通信原理
点击Next,修改Project
名字继续Next,
红框部分选择是否支持Swift
与Kotlin
。
flutter create --org com.example --template=plugin 插件名字
如果需要支持Swift
或者Kotlin
,
flutter create --template=plugin -i swift -a kotlin 插件名字
到这里,插件工程就已经创建好了。
android
:安卓插件代码添加的地方
example
:插件示例工程
ios
:iOS原生代码添加的地方
lib
:插件的Dart代码
Dart
调用原生插件的地方:
原生接收调用的插件类:
通过method来区分不通的方法调用,传参在arguments中
首先需要在example
工程下,执行fLutter build ios
,主要是需要pod install
,生成xxx.workspace
. 然后如下图所示打开Xcode,
使用
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文件语法
在pubspec.yaml
文件dependencies
下添加:
cool_ui:
git:
url: http://code.zhilun.com/frontend/cool_ui.git
ref: develop
# ref指定分支
如果是放在本地也可以使用path
参数。
flutter_webview_plugin:
path: ../flutter_webview_plugin-0.3.10
运行example工程时,一直报library not found
,这个问题还不是一直有,有时候报错有时候不报错,尤其Xcode能运行打开Android Studio运行就显示找不到库文件。搞了好久,请教了很多人,最后发现是Android Studio不能识别大写Lib开头的.a文件,一定要小写。