如何制作一个Flutter Plugin

445 阅读2分钟
提示:这里只讲解如何使用VSCode来制作一个plugin,如何使用其他IDE来创建plugin可以参考其他博客来学习。

1.创建Plugin

方法一:终端创建

打开终端,输入命令

flutter create --org com.yourcompany -i objc --template=plugin math_tool
code 含义
--org 后面输入域名 com.yourcompany
-i 创建OC项目(不写的话默认swift) objc
--template 设置成plugin表示插件类型 plugin
math_tool 插件项目的名称

方法二:通过其他IDE创建

可参考其他博客学习。


2.Plugin Flutter 部分

vscode为我们默认生成了Plugin Flutter部分的文件math_tool.dart

注意:
1.channel名称('math_tool')必须唯一
2.调用invokedMehtod方法,该方法有两个参数,一是方法名称(不能为空),二是参数(可以为空)


3.Plugin iOS 部分

vscode生成的MathToolPlugin.h/m文件是iOS部分的工具类

方法名 含义
+ registerWithRegistrar 注册Plugin
- handleMethodCall flutter主动调用交互回调

---------------------------------------------------------------------------------------------

注册Plugin


下面对iOS中的MathToolPlugin文件进行编写
以实现一个加法方法为例子

通过监听方法的调用来判断方法名称是否匹配,通过获取call.arguments参数,传递给sumFucWithA:B:方法,然后吧调用过返回给Flutter端


4. 加载Plugin

4.1 本地加载

新建一个项目,在项目根目录下(plugin_test_demo),创建文件夹(plugins),然后把插件(math_tool)移动到plugins下。

编辑项目的pubspec.yaml文件:

4.2 Hosted packages

通过该方法,可以把编写的Plugin发布到 pub.dartlang.org 供他人使用。

  • 4.2.1 发布HostedPackages

打开终端,在当前需要上传的Plugin的根目录下输入命令

 flutter packages pub publish --dry-run
 flutter packages pub publish

注意:发布的过程中可能会出现问题,警告和错误描述的都挺清晰,参照其他博客解决即可。
参考一下博客,如果没有解决问题,查阅其它博客即可,在此感谢以下博主提供的解决方案。《发布失败问题解决》《Profier+Showshks系统全局代理的正确姿势》《配置终端Terminal使用Larn》
上面链接的名称内容因为违反了平台敏感词检测规则,所以删减了部分单词,具体点击链接查看即可。

解决所有问题之后,终端再次执行命令

flutter packages pub publish

等待上传成功后终端会出现如下提示:

Looks great! Are you ready to upload your package (y/n)? y
Uploading...
Successfully uploaded package.

发布成功后,你的gmail就会收到邮件通知,邮件中有你发布的Plugin的链接地址


5.参考资料

Flutter Plugin调用Native APIs