直接上代码吧
Android端
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
flutterEngine.getPlugins().add(new TestPlugin());
super.configureFlutterEngine(flutterEngine);
}
}
public class TestPlugin implements FlutterPlugin, MethodChannel.MethodCallHandler {
/*** 两端交互标识 */
private final static String channelName = "channel_test";
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
//主要通过MethodChannel来跟Flutter交互
MethodChannel channel = new MethodChannel(binding.getBinaryMessenger(), channelName);
channel.setMethodCallHandler(this);
}
@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
}
@Override
public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
System.out.println("Flutter 调用方法:" + methodCall);
}
}
Flutter端
String _channelName = "channel_test";
static const MethodChannel _methodChannel = MethodChannel(_channelName);
await _methodChannel.invokeMethod("test", "ok");
问题
Flutter调用Android调不通,各种查资料也没找到,最后给其他人讲解的时候突如其来灵感,原来是我在添加插件的时候,把两个插件_channelName都用了同一个导致的,我一直在调试的是第一个插件,结果他被第二个插件覆盖了,保证插件_channelName唯一就可以了,醉了,醉了,醉了。
记录下
网友评论