Flutter提供了和原生做交互的方式,我们通过和原生交互就可以达到Flutter调用原生平台的相关功能的目的。换句话说,Flutter做不到的事(比如:设备有关的、第三方SDK、长连接等),我们都可以通过Flutter与原生交互来做到,其中插件的编写是必不可少的一个过程。我们一定要掌握插件的编写。
有人会说:“网上不是有很多插件库吗?”没错!但是如果别人写的插件功能没有你想要的怎么办?如果插件与你本地不兼容怎么办?如果你的项目急用一个功能,网上找不到插件库怎么办?那么这个时候学会自己编写插件库就非常有必要了!
本文首发在公众号Flutter那些事
,欢迎大家多多关注。
下面详细的讲解一下Flutter如何创建一个插件,并且教大家上传到Pub库,让大家也体验一把自己的库被别人使用的自豪感。
本文示例源码同步在Github:https://github.com/AweiLoveAndroid/flutter_device_information,如有任何问题,欢迎提issue
Flutter系列博文链接 ↓:
工具安装:
Flutter基础篇:
- 谷歌Flutter1.0正式版发布
- Flutter基础篇(1)-- 跨平台开发框架和工具集锦
- Flutter基础篇(2)-- 老司机用一篇博客带你快速熟悉Dart语法
- Flutter基础篇(3)-- Flutter基础全面详解
- Flutter基础篇(4)-- Flutter填坑全面总结
- Flutter基础篇(5)-- Flutter代码模板,解放双手,提高开发效率必备
- Flutter基础篇(6)-- 水平和垂直布局详解
- Flutter基础篇(7)-- Flutter更新错误全面解决方案(图文+视频讲解)
- Flutter基础篇(8)-- Flutter for Web详细介绍
- Flutter基础篇(9)-- 手把手教你用Flutter实现Web页面编写
- Flutter1.9升级体验总结(Flutter Web 1.9最新版本填坑指南)
Flutter进阶篇:
Dart语法系列博文链接 ↓:
Dart语法基础篇:
Dart语法进阶篇:
一、创建插件
在这里以调用原生平台设备信息为例做讲解。手把手教大家写一个Flutter插件。
(1)首先看看Flutter调用原生平台交互过程
Flutter中通过MethodChannel和原生平台做交互。如图所示:
(2)创建Flutter Plugin插件项目
使用Android Studio/Intellij IDEA创建项目,截图如下:
使用flutter create
命令行创建,项目名称放在最后,命令如下所示:
flutter create --org com.awei --template=plugin -a java --description "A Flutter plugin for using devices informations in Android" flutter_device_information
常用的命令参数如下:
- --org:定义项目的组织结构
- -a:用什么语言编写Android代码
- --description:插件的描述
- -i:用什么语言编写iOS代码
上面那个命令的意思是:创建一个插件,包名为“com.awei”,指定Android代码使用Java语言编写,插件项目名称为“flutter_device_information”,项目描述为:“A Flutter plugin for using devices informations in Android”。
(3)下面看一下完整的目录结构
如下图所示:
其中:
- “android”目录是插件API在Android平台的实现。
- “ios”目录是插件API在iOS平台的实现。
- “example”目录是使用插件的一个示例项目。
- “lib”目录的文件,主要是创建“MethodChannel”,然后接收并处理来自原生平台发来的消息。
(4)插件编写步骤
1.创建MethodChannel对象
打开flutter_device_information.dart
文件,开始创建MethodChannel
对象,参数是自己协定的,后面的原生平台需要用到的这个参数,每一个MethodChannel
对象的这个参数是唯一的标识符,必须记住。如下所示: