3

我正在尝试从我的 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');
    } 
}
4

0 回答 0