使用Flutter进行应用开发时,为实现一些功能(好比WebView加载网页、实现视频控件等)咱们会引入三方插件,这些插件咱们均可以在pub.dartlang.org/flutter网站中进行查找,而后在flutter工程中配置pubspec.yaml文件来引入。那么,若是咱们须要实现的功能对应的插件在该网站上没有怎么办呢,这时候就须要咱们本身来开发特定的插件了。本篇咱们就来介绍一下如何开发本身的插件和如何在项目中使用。java
首先,咱们建立一个指定文件夹demo_0414
,而后在终端命令行中该文件夹下使用如下flutter命令根据插件模板建立一个插件项目android
flutter create -t plugin flutter_plugin_demo
复制代码
执行完成后,会在demo_0414目录下生成一个flutter plugin项目,使用Android Studio打开项目目录结构以下ios
目录结构中咱们能够看到比日常建立的flutter项目多了一个example目录,这个就是对应插件的例子工程,它是一个flutter application项目,当咱们插件项目的功能开发完成后,能够经过example工程写一些plugin api的具体使用实例,以便发布后读者经过example可以更快速的学习该插件的使用方法。git
咱们看到插件项目的lib目录下有一个模板生成的dart文件,该文件包含的FlutterPluginDemo就是一个插件类,其内部实现了一个获取平台系统版本的方法,该方法是经过实现的Platform Channel来获取版本号信息的,咱们查看插件工程内的android和ios目录中确实有对应的Platform Channel实现。github
建立好的插件项目中已经为咱们实现好了一个获取平台系统版本号的插件类,那么,咱们若是想实现本身所须要的功能该如何编写对应的代码呢?编程
在添加安卓平台代码以前,须要确保插件代码经过example工程被构建过一次(这很重要),能够执行如下命令进行构建api
//首先执行
cd flutter_plugin_demo/example/
//而后执行
flutter build apk
复制代码
example工程中构建安卓apk包完成后,能够经过Android Studio打开example项目中的安卓工程,编辑器中的项目结构以下bash
咱们能够看到以android项目目录结构展现插件对应的java类代码位于flutter_plugin_demo/java/com.example.flutter_plugin_demo/
目录下,此时咱们就能够编辑该类文件添加插件功能了。微信
在添加iOS平台代码以前,同安卓同样,也要确保插件代码经过example工程被构建过一次,能够执行如下命令进行构建app
//首先执行
cd flutter_plugin_demo/example/
//而后执行
flutter build ios --no-codesign
复制代码
构建完成后,咱们可使用Xcode打开example工程中iOS项目,找到ios目录下的Runner.xcworkspace
并打开,编辑器中的项目结构以下
咱们能够看到插件代码位于Pods/Development Pods/flutter_plugin_demo/../../example/ios/.symlinks/plugins/
目录下,此时咱们就能够编辑FlutterPluginDemoPlugin类来添加插件功能了。
dart api代码添加就简单多了,直接在插件项目的lib下的dart文件中添加便可
自有插件开发完成后如何使用呢,有三种引用方式
dependencies:
dio: 2.1.x
复制代码
dependencies:
dio:
git:
url: git://github.com/flutterchina/dio.git
复制代码
// 好比example工程中的pubspec.yaml中引入咱们的demo插件的方式
dependencies:
flutter_plugin_demo:
path: ../
// 若是建立一个与插件目录平级目录的flutter项目,引入插件则在pubspec.yaml中配置
dependencies:
flutter_plugin_demo:
path: ../flutter_plugin_demo
复制代码
插件引入以后,咱们就能够在本身的flutter项目中经过dart api使用插件开发的功能了。
Flutter plugin的开发流程其实挺简单,必定要注意添加插件代码以前要使用example工程对平台代码构建一次,这样才会在example工程目录中正常显示插件文件以供编辑。
经过以上步骤便可完成flutter插件项目的建立和插件功能的添加,若是插件功能实现时须要依赖三方插件,那么插件项目中一样能够经过pubspec.yaml引入三方插件。后续咱们在开发分享功能时若是找不到实现好的分享插件,本身就能够来实现了,若是你想公开供你们使用还能够发布到pub上分享出来。
说明:
文章转载自对应的“Flutter编程指南”微信公众号,更多Flutter相关技术文章打开微信扫描二维码关注微信公众号获取。