Метод переопределения onAttachedToEngine никогда не вызывается в FlutterPlugin - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь реализовать плагин флаттера, но каким-то образом функция переопределения onAttachedToEngine никогда не вызывается. В соответствии с этим do c

Во время вызова PluginRegistry.add (FlutterPlugin) FlutterEngine вызовет onAttachedToEngine (FlutterPluginBinding) для данного FlutterPlugin.

но оно никогда не вызывается. Однако я заметил одну вещь: она на самом деле вызывается в первый раз, когда вы собираете и отлаживаете приложение, и прекращается после любых повторных сборок после этого. Вот мой код:

public class Plugin : FlutterPlugin, MethodCallHandler { 

override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
  channel = MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "flutter_plugin")
  channel.setMethodCallHandler(this)
  println("Engine is attached!")
}

companion object {
  @JvmStatic
  fun registerWith(registrar: Registrar) {
    val channel = MethodChannel(registrar.messenger(), "flutter_blockstack")
    channel.setMethodCallHandler(FlutterBlockstackPlugin())
    println("Registered!")
  }
}


override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
if (call.method == "getPlatformVersion") {
    result.success("Android ${android.os.Build.VERSION.RELEASE}")
  } else {
    result.notImplemented()
  }
}

}

1 Ответ

0 голосов
/ 17 апреля 2020

Это ожидаемое поведение.

Сразу после подключения к FlutterEngine эта функция вызывается для установки нового MethodCallHandler. Это делается либо в onAttachedToEngine (AndroidX), либо в registerWith (не AndroidX).

Функцией, которая на самом деле вызывается более одного раза, является onMethodCall, которая вызывается в любое время, когда вы хотите от флаттера с invokeMethod.

Горячий перезапуск или горячая перезагрузка не вызовут onAttachedToEngine, так как на самом деле вы не отсоединились от двигателя, поэтому вам необходимо отсоединить и подключить его для его запуска.

Надеюсь, это разъяснение поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...