javaDispatcherClassContent function

String javaDispatcherClassContent(
  1. String prefix
)

Implementation

String javaDispatcherClassContent(String prefix) => '''
import android.util.Log;

import java.util.HashMap;
import java.util.Map;

import io.flutter.plugin.common.BasicMessageChannel;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.StandardMessageCodec;

public class $prefix$typeCallbackDispatcher {
    public static Map<String, ${prefix}UniCallback> uniCallbackCache = new HashMap<>();

    private static boolean isInit = false;

    public static void init(BinaryMessenger binaryMessenger) {
        if (!isInit) {
            BasicMessageChannel<Object> channel =
                    new BasicMessageChannel<>(binaryMessenger, "$channelPrefix.UniCallbackManager.callback_channel.dispose${prefix.suffix()}", new StandardMessageCodec());

            channel.setMessageHandler((message, reply) -> {
                Map<String, Object> msg = (Map<String, Object>) message;
                String uniCallbackName = (String) msg.get("callback");
                ${prefix}UniCallback uniCallback = uniCallbackCache.get(uniCallbackName);
                uniCallback.disposeDelegate.disposeCallback(uniCallback);
                uniCallbackCache.remove(uniCallbackName);
            });
            isInit = true;
        }
    }

    public static void registerCallback(String name, ${prefix}UniCallback uniCallback) {
        uniCallbackCache.put(name, uniCallback);
    }
}
''';