Вы должны передать Map<String, dynamic>
как отдельный объект.(Обратите внимание, что каждая динамика должна быть одним из разрешенных типов данных .) На конце Java это выглядит как HashMap
.На стороне Java имеются полезные функции получения для доступа к членам карты хеш-функции.
Dart
static void foo(String bar, bool baz) {
_channel.invokeMethod('foo', <String, dynamic>{
'bar': bar,
'baz': baz,
});
}
Java
String bar = call.argument("bar"); // .argument returns the correct type
boolean baz = call.argument("baz"); // for the assignment
Используя этот ответ для полной схемы, вы можете достичь противоположного направления, например:
Java
static void charlie(String alice, boolean bob) {
HashMap<String, Object> arguments = new HashMap<>();
arguments.put("alice", alice);
arguments.put("bob", bob);
channel.invokeMethod("charlie", arguments);
}
Дарт
String alice = methodCall.arguments['alice'];
bool bob = methodCall.arguments['bob'];