Как вызвать аргумент из Java в Dart с помощью MethodChannel?

Я пытаюсь вызвать аргумент из моего собственного кода 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);
}

Я храню свой args в моем HashMap и передав его как аргумент, используя мой 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]);
}

Вот мой слушатель из моего примера репо, он печатает onReward но не возвращает мой аргумент

listener(TheoremReachListener event) {
    if (event == TheoremReachListener.onReward) {
        print('on reward');
    } 
}

0 ответов

Другие вопросы по тегам