我正在尝试让iOS将数据发送回抖动。更具体地说,控制中心媒体控件。我正在开发一个音乐应用程序,可以将数据从Flutter发送到iOS,从而可以将其显示在媒体控件中。
但是,如果我要控制下一个播放暂停,我将如何让iOS在自己的频道上发送数据。基本上让Flutter听iOS发送数据。
答案 0 :(得分:1)
假定您在插件(称为XXX)中使用Swift,您将拥有一个SwiftXXXPlugin
类和一个静态register
方法。移动channel
使其成为静态变量,而不是register
的局部变量。然后为iOS的Dart方法创建一些静态方法,并像这样调用invokeMethod
:
channel.invokeMethod("someMethod", arguments: "someValue")
arguments
是Any
,可以是通道知道如何编码的任何内容,例如字节数组,String,int,double,double等。它还可以编码基本列表和映射。对象。
在Dart端,您有XXX.dart。添加一个称为setHandler
的静态方法,并实现这些方法的实现。使用该频道之前,您需要先致电setHandler
。
static setHandler() {
_channel.setMethodCallHandler(methodCallHandler);
}
static Future<dynamic> methodCallHandler(MethodCall methodCall) async {
switch (methodCall.method) {
case 'someMethod':
print(methodCall.arguments); // prints the argument - "someValue"
return null; // could return a value here
default:
throw PlatformException(code: 'notimpl', message: 'not implemented');
}
}
答案 1 :(得分:0)
实际上不知道如何实施 https://api.flutter.dev/flutter/services/MethodChannel/setMethodCallHandler.html
请提供完整的代码快照,任何帮助将是可贵的。
static setHandler() {
_channel.setMethodCallHandler(methodCallHandler);
}
static Future<dynamic> methodCallHandler(MethodCall methodCall) async {
switch (methodCall.method) {
case 'someMethod':
print(methodCall.arguments); // prints the argument - "someValue"
return null; // could return a value here
default:
throw PlatformException(code: 'notimpl', message: 'not implemented');
}
}