首页 > 解决方案 > FlutterPluginBinding.flutterEngine 已弃用

问题描述

我开发了一个Flutter插件,问题是FlutterPluginBinding.flutterEnginegetFlutterEngine已被弃用。完整代码如下:

class AMPlugin : FlutterPlugin, MethodCallHandler, ActivityAware, PluginRegistry.ActivityResultListener {
    private lateinit var channel: MethodChannel
    private var activity: Activity? = null

    override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
        val engine = flutterPluginBinding.flutterEngine
        channel = MethodChannel(engine.dartExecutor, "aM")
        channel.setMethodCallHandler(this)
    }

    override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
        when (call.method) {
            else -> result.notImplemented()
        }
    }

    override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
        channel.setMethodCallHandler(null)
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?): Boolean {
        return true
    }

    override fun onDetachedFromActivity() {
        activity = null
    }

    override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
        activity = binding.activity
    }

    override fun onAttachedToActivity(binding: ActivityPluginBinding) {
        activity = binding.activity
    }

    override fun onDetachedFromActivityForConfigChanges() {
        activity = null
    }

    companion object {

        @Suppress("UNUSED")
        @JvmStatic
        fun registerWith(registrar: Registrar) {
            val channel = MethodChannel(registrar.messenger(), "aM")
            channel.setMethodCallHandler(AMPlugin())
        }
    }
}

但我不明白如何以另一种方式获取FlutterEngine或初始化MethodChannel。我试过了,val engine = FlutterEngine(binding.applicationContext)但它会导致崩溃,似乎它需要Activity上下文。

如何替换这个已弃用的 API?

标签: androidflutterkotlinflutter-plugin

解决方案


代替:

    channel = MethodChannel(engine.dartExecutor, "aM")

    channel = MethodChannel(flutterPluginBinding.getBinaryMessenger(), "aM")

推荐阅读