什么是plugin
Flutter
和Dart
生态系统的软件包有两种模板,分别是packages
和plugin
,其中plugin包含Android
、iOS
平台特定实现,一般需要Flutter端与Android或iOS进行通讯交互(类比Hybrid或RN中JS与Native的交互),以实现特定功能。
创建plugin
一般使用命令创建Plugin:flutter create —-org com.example —-template=plugin hello
,执行命令后,会在当前目录下生成一个hello
文件夹,里面是一个plugin的简单demo实现。iOS可以使用OC和Swift,Android可以使用Java和kotlin进行代码编写,命令默认使用swift及kotlin,如需修改,使用-i
及-o
命令。例如要创建一个使用OC及java的plugin,命令为:flutter create --org com.example --template=plugin --platforms=android,ios -a java -i objc hello
。
平台通道数据类型及编解码器
在平台通道进行数据传输时,Flutter它会自动对这些值进行序列化和反序列化。 下表展示了如何在平台端接收 Dart 值,反之亦然:
创建一个样例Demo
为了更好的说明流程,这里创建一个禁用截屏功能的plugin进行说明,plugin提供三个功能:全局添加水印
、截屏监控
、禁用截屏
。其中全局添加水印
为在Flutter当前页面栈的最上层添加一个半透、有水印、穿透触摸事件的全遮盖页面,为纯dart实现,不需要与平台进行交互; 截屏监控
为当平台监听到截屏行为后,立即通知Flutter端,是一个持续通讯的过程;禁用截屏
为Flutter端通知平台执行禁用操作(只支持Android平台)。
此plugin已经开发完成并发布到官方pub,可以在GitHub - disable_screenshots下载并查看源码。