Flutter _ 如何优雅的开发一个插件并发布到Dart仓库?,kotlin匿名内部类内存泄露

本文仅介绍 Flutter 插件包的整个开发与发布流程,至于 Dart 包,过程都是类似的,读者可以查阅相关文章进行了解。

创建 Flutter 插件包项目

正文开始前,读者需要对 Flutter 的平台通道有所了解,如果你还不知道,可以先阅读我之前写的Flutter | 如何优雅的调用 Android 原生方法?,然后再回来继续本文的学习。如果你已经掌握平台通道的相关知识,跟着我的步伐,继续往下~

本文将带读者在 Android 平台上实现一个调节音量大小的插件包项目,并发布到 Dart 仓库。首先打开 Android Studio,创建 Flutter Plugin 项目,如下。

创建项目

整个项目创建完成后,目录结构是下面这个样子的,和 Flutter 项目差不多。系统会根据你创建项目所填的包名(我的包名是 cn.blogss.volume_control),自动在 android 和 lib 目录下生成两个类,分别是VolumeControlPlugin.ktvolume_control.dart

目录结构

VolumeControlPlugin.kt 实现了 FlutterPlugin 和 MethodCallHandler 接口。可以发现这和我们编写 Android 端平台通道代码基本一样。实例化了一个名叫 volume_control 的平台通道,之后我们只要在 onMethodCall 方法中根据业务逻辑处理来自平台的消息并返回结果即可。

/** VolumeControlPlugin */
class VolumeControlPlugin: FlutterPlugin, MethodCallHandler {
private lateinit var channel : MethodChannel

// Flutter Engine 启动时会自动调用这个方法,实例化平台通道
override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
channel = MethodChannel(flutterPluginBinding.binaryMessenger, “volume_control”)
channel.setMethodCallHandler(this)
}

override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) { // 这里处理来自平台的消息
if (call.method == “getPlatformVersion”) {
result.success(“Android ${android.os.B

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值