Day13 开发套件 - 范例程序码介绍02 Android 端

接着来看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)的功能,首先会实作**FlutterPluginMethodCallHandler**接口

  1. 实作FlutterPlugin接口,必须实作onAttachedToEngine以及onDetachedFromEngine方法
    • onAttachedToEngine:插件被FlutterEngine加载时调用,可以做一些初始化工作,预设已在这边设置好MethodChannel的通道名称(需要与Flutter 端使用的MethodChannel名称相对应),并通过MethodChannel呼叫setMethodCallHandler来注册一个MessageHandler来接收此通道讯息,设定为this是因为BatterylevelPlugin已实作MethodCallHandler接口,所以能够处理接收通道的讯息
    • onDetachedFromEngine:插件从FlutterEngine移除时调用,可以做一些清理工作,这边对MethodChannel呼叫setMethodCallHandler设定为null,将此通道进行注销
  2. 实作MethodCallHandler接口,就必须实作onMethodCall,目的可让MethodChannel调用setMethodCallHandler,实现从Flutter 端要调用的原生方法,这边对Flutter 端呼叫的方法getPlatformVersion做功能的实现,当Flutter 端呼叫此方法,就会回传现在Android 的版本资讯回去

<<:  [区块链&DAPP介绍 Day20] contract 案例2 - 拍卖

>>:  [NestJS 带你飞!] DAY13 - Guard

总结

总结 如同标题所示,整个系列就是我的读书笔记,虽然网路上也有很多前人的笔记,但是在看官网跟着实作时才...

[Vue2Leaflet系列二] Leaflet Plugins with Vue

本篇文章请参考 [Vue2Leaflet系列一] 从vue-cli安装到建置地图 之前介绍过Leaf...

[Day8] Android - Kotlin笔记:JetPack - Core KTX

Core KTX 包含的module有: androidx.core.animation andro...

【从零开始的Swift开发心路历程-Day30】认识GCD多执行绪Part3(完)

【从零开始的Swift开发心路历程-Day30】认识GCD多执行绪Part3(完) 昨天我们用程序码...

最短路径问题 (8)

10.10 Thorup’s 无向非负整数权重 SSSP 演算法 今天来介绍 Thorup 在 19...