Flutter Platform Channel 调用原生方法没反应怎么办?
我在 Flutter 里用 MethodChannel 调用 Android 原生方法,但点击按钮后完全没反应,log 也没输出。我检查了 channel 名字是一致的,也注册了 methodCallHandler,但就是不进回调。
Flutter 这边调用的是 channel.invokeMethod('getBatteryLevel'),Android 那边是用 Kotlin 写的,代码如下:
override fun onMethodCall(call: MethodCall, result: Result) {
if (call.method == "getBatteryLevel") {
Log.d("Battery", "Called!")
result.success(80)
} else {
result.notImplemented()
}
}
FlutterActivity换成FlutterFragmentActivity或者没在onCreate里注册插件?正确写法是:或者如果你用的是
FlutterActivity,确保AndroidManifest.xml里activity的theme不是NoDisplay类型,且没加android:exported="false"。另外,检查下
MethodChannel初始化时机,别在main()里太早调,等runApp()后再试。