Как вызвать аргумент из 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');
}
}