【发布时间】:2020-09-05 16:13:10
【问题描述】:
我需要将一些数据从本地 IOS 端发送到 dart 端。我正在使用 Channel Method 从 IOS 端调用该方法,但我注意到:
颤振侧:
static const platform = const MethodChannel('samples.flutter.dev/battery');
platform.setMethodCallHandler(myUtilsHandler); // I am calling it in initState
Future<dynamic> myUtilsHandler(MethodCall methodCall) async {
print("myUtilsHandler");
switch (methodCall.method) {
case "someMethod":
print(json.decode(methodCall.arguments));
break;
case 'someMethod2':
print("someMethod2");
break;
default:
print("default");
}
}
原生IOS端:
let controller: FlutterViewController = window?.rootViewController as! FlutterViewController
let batteryChannel = FlutterMethodChannel(name: "samples.flutter.dev/battery",binaryMessenger: controller.binaryMessenger)
batteryChannel.invokeMethod("someMethod", arguments: "someValue")
注意:反之亦然!
【问题讨论】:
-
所有最好的示例代码都存在于插件项目中,因此创建一个插件项目并依赖于您的主项目是一个好主意。另外,请确保您从主 iOS 线程调用
invokeMethod。