Предполагая, что вы используете Swift в своем плагине (называемом XXX), у вас будет класс SwiftXXXPlugin
со статическим register
методом.Переместите channel
, чтобы стать статической, а не локальной переменной register
.Затем создайте несколько статических методов для методов iOS и Dart и вызовите invokeMethod
, например, так:
channel.invokeMethod("someMethod", arguments: "someValue")
arguments
равно Any
и может быть любым, что канал знает, как кодировать, например,массив байтов, String, int, 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');
}
}