我正在尝试从我的 Java 本机代码调用 Dart 的参数,我的 Java 代码中有一个方法 -
@Override
public void onReward(final int quantity) {
HashMap<String, Object> args = new HashMap<>();
args.put("reward",quantity);
Log.i("TheoremReach", "onRewardCenterOpened");
TrsurveysPlugin.getInstance().OnMethodCallHandler("onReward", args);
}
我将 my 存储args
在 my 中HashMap
并使用 my 作为参数传递OnMethodCallHandler
void OnMethodCallHandler(final String method, final HashMap<String,Object> args) {
try {
TrsurveysPlugin.activity.runOnUiThread(new Runnable() {
@Override
public void run() {
channel.invokeMethod(method, args);
}
});
} catch (Exception e) {
Log.e("Trsurveys", "Error " + e.toString());
}
}
如何在我的 Dart 代码中调用它?这是我目前的尝试-
这就是我从代码的 Java 端获取回调的方式,但是这不会int quantity
从方法中返回我的 -
typedef TheoremListener(TheoremReachListener listener);
static final Map<String, TheoremReachListener> theoremReachListener = {
'onReward': TheoremReachListener.onReward,
};
static Future<void> handleMethod(
MethodCall call, TheoremListener listener) async {
listener(theoremReachListener[call.method]);
}
这是我的示例 repo 中的侦听器,它打印onReward
但不返回我的论点
listener(TheoremReachListener event) {
if (event == TheoremReachListener.onReward) {
print('on reward');
}
}