从 iOS 到 Native 的 Flutter MethodChannel 不工作
Flutter MethodChannel from iOS to Native not working
我有一个 Flutter 项目试图在 Flutter 和 iOS Native 之间建立双向通信。到目前为止,从 Flutter 到 iOS,它都能完美运行,但反过来它是无声的。当我从 iOS 调用方法时,没有任何反应。没有消息,没有错误,什么都没有。
我在 iOS 上创建了 MethodChannel,如下所示:
let channel = FlutterMethodChannel(
name: "paymentview",
binaryMessenger: controller.binaryMessenger
)
channel.setMethodCallHandler({
(call: FlutterMethodCall, result: FlutterResult) -> Void in
if (call.method == "initialize") {
} else if(call.method == "authorize") {
}
})
在 Flutter 方面像这样:
_channel = new MethodChannel('paymentview');
_channel.setMethodCallHandler(methodCallHandler);
Future<dynamic> methodCallHandler(MethodCall methodCall) async {
switch (methodCall.method) {
case 'authorized':
print("authorized");
return null;
default:
throw PlatformException(code: 'Not implemented', message: 'Not implemented');
}
}
在 Flutter 上,我调用了这样的方法:
_channel.invokeMethod('authorize');
这很好用。 iOS 接到电话。但是在 iOS 方面,我调用了这样的方法:
DispatchQueue.main.async {
self.channel.invokeMethod("authorized", arguments: nil)
}
Flutter 方面没有任何反应。没有消息,没有错误,什么都没有。我已经尝试了多种变体,包括创建多个通道(每个通道一个)、动态通道 ID 等等,但它在 Flutter 方面是沉默的。有什么想法吗?
编辑:我已经从 iOS 端对此进行了调试,它确实有效。我从我的 Dart 代码中得到 return 值。但是,当我调试 Dart 代码时,没有命中断点。如果我尝试修改 Dart 中的某些状态,什么也不会发生...
Edit2:当 运行 来自 XCode 时,使用 运行ner 项目似乎有效,但当 运行 从 [=47] 中使用 Flutter 项目时似乎无效=]工作室..
如评论中所述,这突然开始工作而没有任何代码更改。我重新启动了我的 mac 几次,刷新了 Android Studio 等。突然它起作用了。
我有一个 Flutter 项目试图在 Flutter 和 iOS Native 之间建立双向通信。到目前为止,从 Flutter 到 iOS,它都能完美运行,但反过来它是无声的。当我从 iOS 调用方法时,没有任何反应。没有消息,没有错误,什么都没有。
我在 iOS 上创建了 MethodChannel,如下所示:
let channel = FlutterMethodChannel(
name: "paymentview",
binaryMessenger: controller.binaryMessenger
)
channel.setMethodCallHandler({
(call: FlutterMethodCall, result: FlutterResult) -> Void in
if (call.method == "initialize") {
} else if(call.method == "authorize") {
}
})
在 Flutter 方面像这样:
_channel = new MethodChannel('paymentview');
_channel.setMethodCallHandler(methodCallHandler);
Future<dynamic> methodCallHandler(MethodCall methodCall) async {
switch (methodCall.method) {
case 'authorized':
print("authorized");
return null;
default:
throw PlatformException(code: 'Not implemented', message: 'Not implemented');
}
}
在 Flutter 上,我调用了这样的方法:
_channel.invokeMethod('authorize');
这很好用。 iOS 接到电话。但是在 iOS 方面,我调用了这样的方法:
DispatchQueue.main.async {
self.channel.invokeMethod("authorized", arguments: nil)
}
Flutter 方面没有任何反应。没有消息,没有错误,什么都没有。我已经尝试了多种变体,包括创建多个通道(每个通道一个)、动态通道 ID 等等,但它在 Flutter 方面是沉默的。有什么想法吗?
编辑:我已经从 iOS 端对此进行了调试,它确实有效。我从我的 Dart 代码中得到 return 值。但是,当我调试 Dart 代码时,没有命中断点。如果我尝试修改 Dart 中的某些状态,什么也不会发生...
Edit2:当 运行 来自 XCode 时,使用 运行ner 项目似乎有效,但当 运行 从 [=47] 中使用 Flutter 项目时似乎无效=]工作室..
如评论中所述,这突然开始工作而没有任何代码更改。我重新启动了我的 mac 几次,刷新了 Android Studio 等。突然它起作用了。