Flutter Override方法onAttachedToEngine在插件中永远不会被调用
我试图实现一个flatter插件,但不知何故,覆盖函数Flutter Override方法onAttachedToEngine在插件中永远不会被调用,flutter,kotlin,Flutter,Kotlin,我试图实现一个flatter插件,但不知何故,覆盖函数onAttachedToEngine从未被调用。据此, 在调用PluginRegistry.add(flatterplugin)期间 FlatterEngine将在上调用onAttachedToEngine(FlatterPluginBinding) 给定的插件 但它从未被调用。但我注意到的一点是,它实际上在您第一次构建和调试应用程序时调用,并在此后的任何重建后停止。 这是我的密码: public class Plugin : Flutter
onAttachedToEngine
从未被调用。据此,
在调用PluginRegistry.add(flatterplugin)期间
FlatterEngine将在上调用onAttachedToEngine(FlatterPluginBinding)
给定的插件
但它从未被调用。但我注意到的一点是,它实际上在您第一次构建和调试应用程序时调用,并在此后的任何重建后停止。
这是我的密码:
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()
}
}
}这是预期的行为 连接到FlatterEngine后,立即调用此函数以设置新的
MethodCallHandler
。这可以在onAttachedToEngine
(AndroidX)或注册表(非AndroidX)中完成
实际上被多次调用的函数是onMethodCall
,它可以在任何时候通过invokeMethod
从flatter调用
热重新启动或热重新加载不会触发已连接的发动机,因为实际上,您尚未从发动机上分离,因此需要断开并重新连接才能触发
我希望这个澄清能对你有所帮助 这是预期的行为
连接到FlatterEngine后,立即调用此函数以设置新的MethodCallHandler
。这可以在onAttachedToEngine
(AndroidX)或注册表(非AndroidX)中完成
实际上被多次调用的函数是onMethodCall
,它可以在任何时候通过invokeMethod
从flatter调用
热重新启动或热重新加载不会触发已连接的发动机,因为实际上,您尚未从发动机上分离,因此需要断开并重新连接才能触发
我希望这个澄清能对你有所帮助 我实际上是指重建,不是热重启,但我认为它实际上每次都调用,但它不执行println(“引擎已连接!”),这似乎很奇怪。我实际上是指重建,不是热重启,但我认为它实际上每次都调用,但它不执行println(“引擎已连接!”),这似乎很奇怪。