接着来看Native 端(Android):
预设建立的android/.../BatterylevelPlugin.kt
:
class BatterylevelPlugin: FlutterPlugin, MethodCallHandler {
/// The MethodChannel that will the communication between Flutter and native Android
///
/// This local reference serves to register the plugin with the Flutter Engine and unregister it
/// when the Flutter Engine is detached from the Activity
private lateinit var channel : MethodChannel
override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
channel = MethodChannel(flutterPluginBinding.binaryMessenger, "batterylevel")
channel.setMethodCallHandler(this)
}
override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
if (call.method == "getPlatformVersion") {
result.success("Android ${android.os.Build.VERSION.RELEASE}")
} else {
result.notImplemented()
}
}
override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
channel.setMethodCallHandler(null)
}
}
这边用来实现Native 端(Android)的功能,首先会实作**FlutterPlugin
与MethodCallHandler
**接口
FlutterPlugin
接口,必须实作onAttachedToEngine
以及onDetachedFromEngine
方法
onAttachedToEngine
:插件被FlutterEngine
加载时调用,可以做一些初始化工作,预设已在这边设置好MethodChannel
的通道名称(需要与Flutter 端使用的MethodChannel
名称相对应),并通过MethodChannel
呼叫setMethodCallHandler
来注册一个MessageHandler
来接收此通道讯息,设定为this
是因为BatterylevelPlugin
已实作MethodCallHandler
接口,所以能够处理接收通道的讯息onDetachedFromEngine
:插件从FlutterEngine
移除时调用,可以做一些清理工作,这边对MethodChannel
呼叫setMethodCallHandler
设定为null
,将此通道进行注销MethodCallHandler
接口,就必须实作onMethodCall
,目的可让MethodChannel
调用setMethodCallHandler
,实现从Flutter 端要调用的原生方法,这边对Flutter 端呼叫的方法getPlatformVersion
做功能的实现,当Flutter 端呼叫此方法,就会回传现在Android 的版本资讯回去
<<: [区块链&DAPP介绍 Day20] contract 案例2 - 拍卖
>>: [NestJS 带你飞!] DAY13 - Guard
总结 如同标题所示,整个系列就是我的读书笔记,虽然网路上也有很多前人的笔记,但是在看官网跟着实作时才...
本篇文章请参考 [Vue2Leaflet系列一] 从vue-cli安装到建置地图 之前介绍过Leaf...
Core KTX 包含的module有: androidx.core.animation andro...
【从零开始的Swift开发心路历程-Day30】认识GCD多执行绪Part3(完) 昨天我们用程序码...
10.10 Thorup’s 无向非负整数权重 SSSP 演算法 今天来介绍 Thorup 在 19...