我正在尝试将参数从 Swift 中的回调方法传递给 Flutter。这是我想要在我的原生 Java 代码中实现的示例:
@Override
public void onRewardRequest(final TJPlacement tjPlacement, final TJActionRequest tjActionRequest, final String itemId, final int quantity) {
this.registrar.activity().runOnUiThread(new Runnable() {
@Override
public void run() {
Map<String, Object> arguments = new HashMap<>();
arguments.put("requestId", tjActionRequest.getRequestId());
arguments.put("token", tjActionRequest.getToken());
arguments.put("itemId", itemId);
arguments.put("quantity", quantity);
channel.invokeMethod("onRewardRequest", arguments);
}
});
}
编辑:我面临一个问题,论点
args
未定义,我不确定什么是 Swift 等效的 arguments.put()
从上面的Java代码。这是我目前的实现://Calling my method 'onRewardRequest()' from Dart->Swift
methodChannel.invokeMethod("onRewardRequest", arguments: args, result: {(r:Any?) -> () in
func placement(_ placement: TJPlacement?, didRequestReward request: TJActionRequest?,itemId: String?,quantity: Int) {
//How do I call `arguments.put` over here like shown above in the Java code?
}
})
最佳答案
看起来你想从 Swift 调用一个 Dart 方法,传递一个字典的参数(在 Dart 端会变成一个 Map)。创建一个相关类型的字典,例如:String->Any,填充它并将其用作 arguments
范围。
var args = [String: Any]()
args["itemId"] = itemId
args["quantity"] = quantity
// todo - add other arg members
methodChannel.invokeMethod("onRewardRequest", arguments: args)
关于java - 如何从 Swift 原生代码到 Flutter 的 'put' 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61507418/